如何将一个promise的返回值放入一个数组?

时间:2019-04-14 13:13:56

标签: javascript arrays node.js es6-promise puppeteer

我是JavaScript新手,如果问题太傻了,请您抱歉。

我在file1.js中有一个异步函数getPartners(),但它返回的数组如下:

return Promise.resolve(partners);
['1','2','3']

在file2.js中,我有一个带有partnerIds和emptyArray的数组。我的目标是当我在file2.js中调用getPartners()时,emptyArray等于该函数的返回值。换句话说,我想将返回的值推送到emptyArray。

目前,我可以通过以下方式获取值:

let emptyArray = listItems();
emptyArray.then((result) => {
  console.log(result);
});

我的问题是,如果我尝试在.then之外进行console.log(emptyArray),则为空。在从promise中获取值之后,我也想对其进行过滤,因此我需要将这些值保存到一个数组中,以便稍后在代码中调用。

我该怎么做?

编辑: 这是我想要实现的:

const { getPromiseResult } = require('./list');

let existingIds = ['1','2','3'];

let emptyArray = getPromiseResult();
emptyArray.then((resultArrayfromPromise) => {
  console.log(resultArrayfromPromise) // ['2','3','4']
  // filter the results by the existingIds array's elements
  // get result: ['1','2','3','4']
  // and get this result in a new filtered array which I can reach from the outside
});

filteredArray.dosomeotherstuff();

1 个答案:

答案 0 :(得分:0)

从ES7开始,您可以使用 async / await 摆脱这种情况。等待等待操作完成,如果有返回值,则将其分配给变量。

但是您只能在异步函数中使用await,因此请将代码包装在其中。

async function run() {
    const { listItems } = require('./list');
    let existingIds = ['1','2','3'];
    let emptyArray = await getPromiseresult(); 
    console.log(emptyArray); // now it's not empty
    filteredArray.dosomeotherstuff();
}

run();