如何使用 return 来自 promise.all 的数据
how to use and return data from promise.all
我想知道如何在 nodejs express 中使用 javascript 实现 promise.all 和 return 数据。
我有一个辅助函数,相互依赖又相互独立,如何使用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
。它可能会根据您的需要而有所不同,或者如果您更愿意坚持使用 Promise.then
而不是 async/await
。
//about.js
var express = require('express');
var router = express.Router();
var helper = require('../helper.js');
router.get('/', async(req, res) => {
const data = await helper.getdata()
const [list, result, param] = await Promise.all([
helper.getlist(data),
helper.getResult(), // if it does not depend of data, it could be load together with data using a Promise.all as well
helper.getall(data)
])
const renderParam = JSON.stringify({
da: data,
li: list,
re: result,
param
})
res.render("about.ejs", renderParam);
})
//helper.js
module.exports.getdata = function(rurl) {
return new Promise(function(resolve, reject) {
try {
var url_parts = require('url').parse(rurl, true);
var urlquery = url_parts.query;
resolve(urlquery);
} catch (err) {
reject(err);
}
})
}
// or helper shorter
const url = require('url')
module.exports.getData = rurl => new Promise(
(resolve, reject) => {
try {
const {
query
} = url.parse(rurl, true);
resolve(query);
} catch (err) {
reject(err);
}
}
)
我想知道如何在 nodejs express 中使用 javascript 实现 promise.all 和 return 数据。
我有一个辅助函数,相互依赖又相互独立,如何使用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
。它可能会根据您的需要而有所不同,或者如果您更愿意坚持使用 Promise.then
而不是 async/await
。
//about.js
var express = require('express');
var router = express.Router();
var helper = require('../helper.js');
router.get('/', async(req, res) => {
const data = await helper.getdata()
const [list, result, param] = await Promise.all([
helper.getlist(data),
helper.getResult(), // if it does not depend of data, it could be load together with data using a Promise.all as well
helper.getall(data)
])
const renderParam = JSON.stringify({
da: data,
li: list,
re: result,
param
})
res.render("about.ejs", renderParam);
})
//helper.js
module.exports.getdata = function(rurl) {
return new Promise(function(resolve, reject) {
try {
var url_parts = require('url').parse(rurl, true);
var urlquery = url_parts.query;
resolve(urlquery);
} catch (err) {
reject(err);
}
})
}
// or helper shorter
const url = require('url')
module.exports.getData = rurl => new Promise(
(resolve, reject) => {
try {
const {
query
} = url.parse(rurl, true);
resolve(query);
} catch (err) {
reject(err);
}
}
)