首页 > 解决方案 > 带有节点包的 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);
    })

但是数据返回[未定义,未定义,未定义]图像确实返回了一些东西。

标签: node.jspromise

解决方案


您必须在 promises.all 中提供一系列承诺,不要评估它们。试试这个

Promise.all(characters.map(char => client.search(char, options)))
.then(data => {
  console.log(data);
})

推荐阅读