![](/img/trans.png)
[英]nodejs/js: Only first function of async.series is executed even after calling back
[英]nodejs: Async.series only executes the first function and stops
在執行以下代碼時,只執行async.series的第一個函數。
var fs = require("fs");
var async = require("async");
var buffer = new Buffer(10);
var read = "";
var readByt;
async.series([
function(callback) {
console.log("console: 1");
},
function (callback){
console.log("console: 2");
}
],function(){});
輸出如下:
c:\>node fr.js
}}}c:/log.txt
File closed successfully.
如果編輯如下所述:
var fs = require("fs");
var async = require("async");
var buffer = new Buffer(10);
var read = "";
var readByt;
async.series([
function(callback) {
console.log("test");
},
function (callback){
console.log("console: 1");
}
function (callback){
console.log("console: 2");
}
],function(){});
輸出變化如下:
c:\>node fr.js
test
如何讓async.series中的所有函數執行?
我認為你需要調用函數數組中提供的callback
參數來指示async
模塊調用下一個函數。
var fs = require("fs");
var async = require("async");
var buffer = new Buffer(10);
var read = "";
var readByt;
async.series([
function(callback) {
fs.open('c:/ab.txt', 'r+', function(err, fd) {
fs.read(fd, buffer, 0, buffer.length, 0, function(err, bytes){
read = buffer.slice(0, bytes).toString();
readByt = bytes;
console.log("}}}"+read);
fs.close(fd, function(err){
if (err){
console.log(err);
}
console.log("File closed successfully.");
})
})
})
//invoke here for continue and to break use callback(false); callback()
},
function (callback){
console.log("console:"+read);
console.log("console:"+read.substr(read.length-1));
console.log("console:"+buffer.slice(0, readByt).toString());
}
],function(){});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.