Promise避免金字塔回调

前后端分离开发,前端通过接口获取数据,但是有的页面不止一个接口,就会出现金字塔回调,可以通过 Promise 封装请求。

request-data.js:

function reqData(posturl,req,res,callback) {//请求用户数据
    request({
        url: con.url + posturl,method: "POST",json: true
        }
    }, (error,response,body) {
        if (!error && response.statusCode == 200) {
            callback(body.code,body.data,null);
        } else {
            callback(null,"error");
        }
    });
}

 reqPostData(posturl,bodyData,1)">
        },body: bodyData
    },1)">);
        }
    });
}

 

viewData.js:

引入数据请求模块
var requestData = require('./request-data');

 getNoParam(postUrl,describe) {
    var describe = describe || '数据';
    创建Promise对象
    var p = new Promise((resolve,reject){
        发送获取相应数据的请求
        requestData.reqData(postUrl,1)"> (code,data,err) {
            if (code == 0) {
                成功返回数据
                resolve({Data:data});
            }  {
                失败说明原因
                reject(describe + "获取失败:" + data);
            }
        });
    });
    return p;

}

 getWithParam(postUrl,postData,describe){
    发送获取相应数据的请求
        requestData.reqPostData(postUrl,1)"> console.log(code,err);
             p;
}

路由文件调用:

var viewData = require('../modules/viewData'/*商品列表*/
router.get('/list',1)"> (req,res) {
    Promise
        .all([viewData.getNoParam('/user/hot_list','热门列表'),viewData.getWithParam('/user/recommend_list',{id: req.query.id},'推荐列表')])
        .then(
             (results) {
                res.render('index/pay_complet'0].Data,rm: results[1].Data
                });
            },1)"> (reason) {
                console.log(reason);
                res.render('common/error',{title: '错误'

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...