javascript - 如何导出 promise 结果?

标签 javascript promise es6-promise

这段代码工作正常。在所有 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/

相关文章:

javascript - 不嵌套地链接 ES6 Promise

javascript - 使用 Javascript API 的 Google Drive 可恢复文件上传问题

javascript - 为什么 javascript css 样式适用于第一种情况而不适用于第二种情况?

javascript - 将事件连接到某个标签或某个类的所有 html 元素

node.js - 在 lambdas/arrow-functions 中抛出没有大括号的错误

node.js - NodeJS + EJS + Promise : page is not displayed until the promise is fulfilled

javascript - Jquery keyup 只能在 Chrome 中工作?

javascript - 如何等到jquery效果循环完成后再执行函数

node.js - 如何在 Nodejs 上使用 DynamoDb 测试等待/异步?

javascript - 如何打破 promise 的链条