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了

猜你喜欢

转载自873719187.iteye.com/blog/2278078