今天做一个项目,展现一个页面需要从服务器请求两次数据,太繁琐了,今天用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了

本文展示如何通过Promise规范在控制器中减少服务器数据请求次数,提高效率并优化用户体验。通过实例解析,实现一次请求获取多个相关数据,最终整合并返回结果。
375

被折叠的 条评论
为什么被折叠?



