node.js - Promise.all 可以尽快处理结果,而不是等待所有的 Promise 完成

标签 node.js koa

我正在使用 KOA2 来演示大管道。我希望在结果准备好时尽快输出结果,而不是等到所有结果准备好(然后全部输出)。

我卡在这里,代码如下:(get_usersget_posts 返回一个 promise )

async (ctx, next) => {

    ctx.res.write("<html><body>...")

    let data = await Promise.all( [res_fetch.get_users(), res_fetch.get_posts()] )

    ctx.res.write(data[0])
    ctx.res.write(data[1])
    ctx.res.write("</body></html>")
    ctx.res.end()

}

理想情况下应该是这样的:(我不知道如何实现)

let data = await Promise.oneFinished( [res_fetch.get_users(), res_fetch.get_posts()] )

if (data[0] is finished)
    ctx.res.write(data[0])
else if (data[1] is finished)
    ctx.res.write(data[1])

最佳答案

  let data = await
    Promise.all([
        res_fetch.get_users().then(result => {
            ctx.res.write(result)
        }),
        res_fetch.get_posts().then(result => {
            ctx.res.write(result)
        }),
    ])


    ctx.res.write("</body></html>")
    ctx.res.end()

关于node.js - Promise.all 可以尽快处理结果,而不是等待所有的 Promise 完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47346100/

相关文章:

node.js - 身份验证和注册时的问题node-xmpp

javascript - 如何在jquery中解析这个json?

node.js - IBM bluemix 上 NodeRED 中的 WebSocket header

javascript - 在 NW.JS 中从程序切换器中隐藏窗口

javascript - Node js,无需传递依赖项即可拆分文件?

javascript - 渲染页面后Mongojs查询完成

我在 Node JS 中禁用缓存后,CSS 字体在 IE 中不起作用

javascript - 我应该使用什么模式在 Node/JavaScript 中制作监听机器人?

node.js - 无法使用 KOA-NEO4J 库传递参数