Javascript 如何从promise.all使用和返回数据
我想知道如何在nodejs express中使用javascript实现promise.all并返回数据 我有一个助手函数,它是相互依赖和独立的,如何使用promise.all来进行并行Javascript 如何从promise.all使用和返回数据,javascript,node.js,express,async-await,es6-promise,Javascript,Node.js,Express,Async Await,Es6 Promise,我想知道如何在nodejs express中使用javascript实现promise.all并返回数据 我有一个助手函数,它是相互依赖和独立的,如何使用promise.all来进行并行 //about.js var express = require('express'); var router = express.Router(); var helper= require('../helper.js'); router.get('/', function (req, res) { he
//about.js
var express = require('express');
var router = express.Router();
var helper= require('../helper.js');
router.get('/', function (req, res) {
helper.getdata().then(data=>{
helper.getlist(data).then(list=>{
helper.getResult().then(res=>{
helper.getall(data).then(params=>{
res.render("about.ejs", {da: JSON.stringify(data), li: JSON.stringify(list),re: JSON.stringify(res), param: JSON.stringify(params)});
})
})
})
})
//helper.js
module.exports.getdata= function (rurl) {
return new Promise(async function (resolve, reject) {
try {
var url_parts = require('url').parse(rurl, true);
var urlquery = url_parts.query;
resolve(urlquery);
}
catch (err) {
reject(err);
}
})
}
这是使用Promise.all的一种方法。它可能会根据您的需要而有所不同,或者您是否更愿意遵守
承诺。然后
而不是async/await
//about.js
var express=需要(“express”);
var router=express.router();
var helper=require('../helper.js');
路由器.get('/',异步(req,res)=>{
const data=await helper.getdata()
const[list,result,param]=wait Promise.all([
helper.getlist(数据),
getResult(),//如果它不依赖于数据,那么也可以使用Promise.all将其与数据一起加载
helper.getall(数据)
])
const renderParam=JSON.stringify({
da:数据,
李:名单,,
关于:结果,
param
})
res.render(“about.ejs”,renderParam);
})
//helper.js
module.exports.getdata=函数(rurl){
返回新承诺(功能(解决、拒绝){
试一试{
var url_parts=require('url').parse(rurl,true);
var urlquery=url\u parts.query;
解析(urlquery);
}捕捉(错误){
拒绝(错误);
}
})
}
//或更短的助手
常量url=require('url')
module.exports.getData=rurl=>新承诺(
(解决、拒绝)=>{
试一试{
常数{
查询
}=url.parse(rurl,true);
解析(查询);
}捕捉(错误){
拒绝(错误);
}
}
)
require()
是同步的。仅仅使用承诺
无法使其异步。承诺并不能使事情异步化——它只是一种帮助处理异步函数的设计模式