如何将promise的返回值推送到数组中? [重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将promise的返回值推送到数组中? [重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

我是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();
答案

从ES7开始,你可以使用async / await来摆脱它。 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();

以上是关于如何将promise的返回值推送到数组中? [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在nodeJS的mysql查询中将值推送到数组?

如何遍历一组 Firebase Firestore 文档并将值推送到数组中

如何将值推送到 Cypher 中的属性数组?

如何在 PHP 中将数组值推送到另一个数组中? [复制]

如何将新值推送到 Mongoose 中的嵌套数组

如何将值推送到 QML 属性变量二维数组 - 动态?