Mak*_*iev 6 javascript parallel-processing node.js progress-bar node-async
我使用aync.parallel并行运行两个函数.这些函数请求RSS提要.然后解析RSS提要并将其添加到我的网页.
但由于某种原因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!");
});
Run Code Online (Sandbox Code Playgroud)
事实上我只有"完成!" 在我的网页上.为什么?
我为什么需要打电话res.end()?
在Node.js的文件说:
必须在每个响应上调用方法response.end().
如果我不打电话,我的网页将被"下载"(我的意思是我的浏览器地址栏中的进度条).
Pau*_*gel 10
我想你的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!");
});
Run Code Online (Sandbox Code Playgroud)
在旁注中,您应该调用res.end()以便Node知道消息已完成并且已写入所有内容(标题+正文).否则,套接字将保持打开状态并将永远等待另一条消息(这就是浏览器显示进度条的原因:它不知道请求已经结束).
| 归档时间: |
|
| 查看次数: |
3419 次 |
| 最近记录: |