Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从promise.all使用和返回数据_Javascript_Node.js_Express_Async Await_Es6 Promise - Fatal编程技术网

Javascript 如何从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

我想知道如何在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) {
   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()
是同步的。仅仅使用
承诺
无法使其异步。承诺并不能使事情异步化——它只是一种帮助处理异步函数的设计模式