如何导出承诺结果?

新手上路,请多包涵

此代码工作正常。在所有承诺成功解决后,我只需要导出数据变量。

我无法将此代码用于函数和导出变量。因为在这种情况下,这个函数将导出一个空数组。

 '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))

原文由 Entry Guy 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 172
1 个回答

您可以轻松地将其分配给导出的变量,但您不应该这样做 - 分配是异步发生的,并且变量可能在此之前在导入它的模块中被读取。

因此,只需导出 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:直到 建议的顶级 await 出现,你可以在导出之前等待值。

原文由 Bergi 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题