簡體   English   中英

nodejs:Async.series只執行第一個函數並停止

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM