Node.JS async.parallel不会等待所有任务完成

马克西姆·德米特里耶夫(Maxim Dmitriev)

我正在使用aync.parallel来并行运行两个函数。这些功能要求RSS feed。然后解析RSS feed,并将其添加到我的网页中。

但是由于某种原因async.parallel,无需等待两个函数完成就运行回调方法

该文件说:

任务完成后,结果将作为数组传递到最终回调。

我的代码。

require('async').parallel([ function(callback) {
        fetchRss(res, bbcOpts); // Needs time to request and parse
        callback();
    }, function(callback) {
        // Very fast.
        callback();
    } ], function done(err, results) {
        if (err) {
            throw err;
        }
        res.end("Done!");
    });

实际上我只有“完成!” 在我的网页上。为什么?

为什么我需要打电话res.end()

Node.js的文件说:

必须在每个响应上调用方法response.end()。

如果我不叫它,我的网页将被“下载”(我的意思是浏览器地址栏中的进度条)。

保罗·穆格尔

我想您的fetchRss函数是异步的:稍后执行,并立即调用回调。您应该将回调发送至fetchRss

function fetchRss(res, bbcOpts, callback) {
    doSomething();
    callback();
}

require('async').parallel([ function(callback) {
        fetchRss(res, bbcOpts, callback); // Needs time to request and parse
    }, function(callback) {
        // Very fast.
        callback();
    } ], function done(err, results) {
        if (err) {
            throw err;
        }
        res.end("Done!");
    });

附带说明,您应该致电res.end()以便Node知道消息已完成并且所有内容(标头+正文)均已编写。否则,套接字将保持打开状态,并将永远等待另一条消息(这就是浏览器显示进度栏的原因:它不知道请求已结束)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Node JS Async Promise。所有问题

来自分类Dev

了解Node.JS async.parallel

来自分类Dev

在所有迭代完成之前调用了node.js async.each()回调

来自分类Dev

node.js:等待所有线程完成

来自分类Dev

对Node.js的async.parallel()的调用是否同步?

来自分类Dev

Node.JS中的ASYNC

来自分类Dev

Node.js,等待所有Redis查询完成,然后再继续执行

来自分类Dev

如何强制后处理等待所有提取过程在node.js中完成?

来自分类Dev

Node.js,等待所有Redis查询完成,然后再继续执行

来自分类Dev

Node.js中的async / await替换

来自分类Dev

node.js中的async.eachSeries

来自分类Dev

.net中的Node.js与Async / await

来自分类Dev

node.js嵌套async.eachSeries

来自分类Dev

Node.js:async.map变慢

来自分类Dev

Node.js中的async / await替换

来自分类Dev

使用 Node js Await/Async 函数

来自分类Dev

与Node js async / await相比,了解Python async / await

来自分类Dev

Node.js async.each等待第一个循环

来自分类Dev

Node.js async.each等待第一个循环

来自分类Dev

将参数传递给node.js中的async.parallel

来自分类Dev

node.js async.each回调,如何知道它何时完成?

来自分类Dev

async.map不会在Node.js中调用回调

来自分类Dev

node.js async.js nextTick与setImmediate

来自分类Dev

Node.js,Mongo async.js插入和查询

来自分类Dev

Node.JS的Async.js出现问题

来自分类Dev

Node js,等待,直到从 MongoDB 获取所有数据

来自分类Dev

等待请求完成Node.js

来自分类Dev

等待操作在node.js中完成

来自分类Dev

node.js等待文件操作完成