这段代码工作正常。在所有 promise 成功解决后,我只需要导出数据变量。
我无法将此代码用于函数和导出变量。因为在这种情况下,此函数将导出一个空数组。
'use strict'
import urls from './urls'
import getData from './get-data'
getData(urls).then((responses) => {
const data = []
const results = responses.map(JSON.parse)
for (let i = 0, max = results.length; i < max; i++) {
// some magic and pushing
}
return data
}).catch(error => console.log(error))
最佳答案
您可以轻松地将它分配给导出的变量,但您不应该这样做 - 分配是异步发生的,并且变量可能会在此之前在导入它的模块中被读取。
因此,只需导出 promise 1!
// data.js
import urls from './urls'
import getData from './get-data'
export default getData(urls).then(responses =>
responses.map(JSON.parse).map(magic)
);
// main.js
import dataPromise from './data'
dataPromise.then(data => {
console.log(data);
…
}, console.error);
1:直到 proposed top-level await
出现,您可以在导出之前等待值。
关于javascript - 如何导出 promise 结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42958334/