node.js - 带有节点包的 Promise.all
问题描述
你好,我使用了一个使用 Promise 的节点包。
我想在一个数组中返回所有一起解决的承诺,我听说你可以用 promise.all 做到这一点。但我不确定如何在我的情况下实施它。
到目前为止我有这个:
const characters = ['yoda','luke skywalker' ,'R2-D2'];
client.search(<A CHARACTER FROM THE CHARACTER ARRAY>, options)
.then(images => {
console.log(images)
})
.catch(error => console.log(error));
我试图做的事情:
const characters = ['yoda','luke skywalker' , 'R2-D2']
Promise.all(characters.map(char => {
client.search(char, options)
.then(images => {
console.log(images)
})
.catch(error => console.log(error));
})).then(data => {
console.log(data);
})
但是数据返回[未定义,未定义,未定义]图像确实返回了一些东西。
解决方案
您必须在 promises.all 中提供一系列承诺,不要评估它们。试试这个
Promise.all(characters.map(char => client.search(char, options)))
.then(data => {
console.log(data);
})
推荐阅读
- gnuplot - 如何在mac上为gnuplot设置默认路径目录
- rxjs - 使用 rxjs 实现可拖动组件
- javascript - 在按钮中编辑 onclick url
- ios - 将 Swift 文件添加到应用程序的资源包时遇到问题
- excel - 使用 Excel VBA 更新 SharePoint 列值
- c++ - 在 Visual Code Studio 中找不到 opencv(适用于 ubuntu 中的 c++)
- visual-studio-2015 - 从特定团队项目中获取代码分支
- scala - Spark withColumn 用于修改列但不添加新列
- mysql - Mysql跨数据库外键
- ios - Firebase 模棱两可的参考“FIRMessagingAPNSTokenType ... 模棱两可”