如何解决为什么Promise.all返回[[Function:test1],[Function:test2]]
我正在学习Promises:
Promise.all([
test1,test2
]).then((res)=>{
resolve(res);
})
上面的代码不会返回值,而是指向函数的指针:
[ [Function: test1],[Function: test2] ]
那是为什么? JS的异步特性很难掌握
完整代码段和下面的进一步说明:
module.exports = function main(dbo,tickers,quotes) {
const arr = tickers.split(',');
let underlyingPrice = 0;
let collection = '';
let obj = {};
arr.forEach((ticker) => {
if (quotes[ticker].assetType === 'EQUITY') {
Object.assign(obj,{
[ticker]: {}
})
underlyingPrice = quotes[ticker].regularMarketLastPrice;
collection = dbo.collection(`priceHistory-${ticker}`);
getfastMA(underlyingPrice,collection);
getslowMA(underlyingPrice,collection);
}
})
Promise.all([
getfastMA,getslowMA
]).then((res)=>{
console.log(res);
})
}
我想发生的事情:
-
arr.forEach
遍历数组,获取代码并传递到getfastMA
和getslowMA
函数上。这些函数执行mongodb查询,该查询包含该特定行情自动收录器的数据。另外,这些函数将平均值计算为,为Promise
- 这两个函数是
Promise
,一旦上面的循环结束,我想一起解决这些问题 - 将平均值保存到obj中。
我真正得到的是:
[ [Function: getfastMA],[Function: getslowMA] ]
我看了几段YouTube视频,以为我在复制语法,但是显然我不是
解决方法
可能test1
是test2
和Promise.all
是您的诺言返回函数,并且在您尝试执行操作时,您不会调用它们来返回诺言以将其移交给Promise.all
。 .all
需要将一组promise作为一个参数。因此,需要在某个地方调用这些函数,并将数组中的promise传递给Promise.all([
test1(),test2()
]).then((res)=>{
resolve(res);
})
方法。以下示例将它们称为内联。
get*
更新帖子后,请使用您的Promise.all
命名函数。但是,再次提醒您,不要忘了像我上面的代码那样调用它们,以便您有返回它们的保证,并使Then
可以使用它们。 all
会向您返回如果每个承诺<form>
都已履行时所返回的内容。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。