所以我一直在嘗試使用Promise.all()
方法,並且遇到了需要將方法傳遞給承諾數組的問題,但是我我不確定應用程序將會調用/需要多少承諾。爲Promise.all()動態地構建Promise.all()承諾數組
下面是我已經得到工作由專門建立陣列
router.post('/test1', (req, res, next) => {
console.log('Hit on POST /test1');
let arr = ['[email protected]','[email protected]'];
Promise.all([
lookUpUserId(arr[0]),
lookUpUserId(arr[1])
]).then((x)=>{res.send(x)});
});
我lookUpUserId()
函數返回一個承諾,我可以使用它,如果我明確的列出它們在陣列中的方法。不過,我嘗試了幾種方法來即時創建這個數組,並且我似乎無法使其工作。
實施例#1
router.post('/test1', (req,res,next) => {
console.log('Hit on POST /test1');
let arr = ['[email protected]','[email protected]'];
Promise.all((arr)=>{
let out = [];
for(let i=0; i<arr.length; i++){
out.push(lookUpUserId(arr[i]));
}
return out;
}).then((x)=>{res.send(x)});
});
實施例2
outer.post('/test1', (req,res,next) => {
console.log('Hit on POST /test1');
let arr = ['[email protected]','[email protected]'];
let promArr = (arr)=>{
let out = [];
for(let i=0; i<arr.length; i++){
out.push(lookUpUserId(arr[i]));
}
}
Promise.all(promArr).then((x)=>{res.send(x)});
});
您已經創建了一個數組返回函數,而不是一個數組。 – Bergi
我已經清除了一大堆激烈的評論。不要繼續發佈它們。 – Undo