如何将承诺的 return 值推入数组?
How to push a promise's return value into an array?
我是 JavaScript 的新手,很抱歉这个问题太愚蠢了。
我在 file1.js 中有一个异步函数 getPartners(),它 return 是一个像这样的数组:
return Promise.resolve(partners);
['1','2','3']
在 file2.js 中,我有一个包含 partnerIds 的数组和一个空数组。我的目标是当我在 file2.js 中调用 getPartners() 时,emptyArray 等同于函数的 return 值。换句话说,我想将 returned 值推送到 emptyArray。
目前我可以通过这种方式获取值:
let emptyArray = listItems();
emptyArray.then((result) => {
console.log(result);
});
我的问题是,如果我尝试在 .then 之外 console.log(emptyArray),它是空的。我也想过滤它,在从承诺中获取值后,我需要将这些值保存到一个数组中,稍后我可以在代码中调用它。
我该怎么做?
编辑:
这就是我想要实现的目标:
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 来摆脱 then。 await 等待操作完成,如果有 return 值,则将其分配给变量。
但是您只能在异步函数中使用 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();
我是 JavaScript 的新手,很抱歉这个问题太愚蠢了。
我在 file1.js 中有一个异步函数 getPartners(),它 return 是一个像这样的数组:
return Promise.resolve(partners);
['1','2','3']
在 file2.js 中,我有一个包含 partnerIds 的数组和一个空数组。我的目标是当我在 file2.js 中调用 getPartners() 时,emptyArray 等同于函数的 return 值。换句话说,我想将 returned 值推送到 emptyArray。
目前我可以通过这种方式获取值:
let emptyArray = listItems();
emptyArray.then((result) => {
console.log(result);
});
我的问题是,如果我尝试在 .then 之外 console.log(emptyArray),它是空的。我也想过滤它,在从承诺中获取值后,我需要将这些值保存到一个数组中,稍后我可以在代码中调用它。
我该怎么做?
编辑: 这就是我想要实现的目标:
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 来摆脱 then。 await 等待操作完成,如果有 return 值,则将其分配给变量。
但是您只能在异步函数中使用 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();