node.js中promise的一个使用小例子

今天做一个项目,展现一个页面需要从服务器请求两次数据,太繁琐了,今天用promise规范了一下,只需要从服务器发送一次数据即可实现。

需要发送的数据:

我在controller中写了如下代码:

OrderForm = require('../models/OrderForm.js');
Person = require('../models/Person.js');

function OrderForm(){

}

OrderForm.save = function(req,res){
    OrderForm.save(req.body.name,req.body.restaurant,req.body.meal,req.body.price)
};
var get_person = new Promise(function(resolve,reject){
    Person.getAll()
        .then(function(name){
            console.log(name)
            resolve(name)
        })
});
var get_order_list = new Promise(function(resolve,reject){
    OrderForm.statics.getAll()
        .then(function(list){
            console.log(list)
            resolve(list)
        })
});

OrderForm.getAll = function(req,res){
    Promise.all([get_person,get_order_list]).then(function(result){res.send(result)});

};

module.exports = OrderForm;

 

需要说一下的是最后的result存入了之前promise中resolve的信息,打印出来是这个样子的:

可以看到放到了一个数组里,取的时候:

function show_order_list() {
    $.when($.ajax({
        url:"get_meal_list",
        type:"GET",
        dataType:"json",
        success:function(data){
            var meal_list = [];
            var name_list = [];
            data[1].forEach(function(list) {
                meal_list.push(list);
                var meal = {name: list.list, restaurant: list.restaurant, meal: list.meal, price: list.price};
                localStorage.setItem('meal_list', JSON.stringify(meal_list));
            });
            data[0].forEach(function (name) {
                if (name_list.indexOf(name.list) == -1) {
                    name_list.push(name.list);
                    localStorage.removeItem('all_people_list');
                    localStorage.setItem('all_people_list', JSON.stringify(name_list));
                }
            })
        }
    })).then(function(){show_lists()});
}

  分别用[0]和[1]就ok了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值