簡體   English   中英

Nodejs,異步模塊函數調用

[英]Nodejs, async module function call

var output = "";
//Make article Record.

async.parallel([function (callback) {
    Article.save(Article, function (err, member) {
        //console.log("member : " + member);
        if (err) {
            console.log(err);
            output = 1;
        } else {
            console.log("Create article record success");
            output = 2;
        }
        callback();
    });
}], function (err, result) {
    console.log("log 1 : " + output);
    res.send(output);
    console.log("log 2 : " + output);
});

嗨,我在異步lib上遇到了麻煩。

我可以得到

日志1:2

從最后2個console.log記錄2:2。

但是不會觸發res.send(output) 當我用res.send("2")替換它時,它可以工作。

但是, res.send(output)不起作用,並且我的Android應用程序生成SocketTimeoutException因為未發送響應。

有什么問題? 幫我。

對於此任務,您不需要async.parallel (並行執行函數,並且在最后一個執行調用回調后執行)。

請參閱異步文檔

Article.save(Article, function (err, member) {
  //console.log("member : " + member);
  if (err) {
    console.log(err);
    return res.send(err);
  }

  console.log("Create article record success");
  res.send("Create article record success");
});

您也不需要全局變量output

你的問題很簡單,因為你試圖發送一個編號, res.send將拿起作為一種身份的代碼(這是無效)。 嘗試更改以下代碼:

output = 1; output = "1"; 和相同的output = 2; output = "2";

請參閱有關res.send的文檔,並看到不支持該號碼:

res.send([body]) body參數可以是Buffer對象,String,對象或Array。

顯然,在這種情況下, async.parallel完全無關緊要,但我只是假設您確實需要此方法,而不是將其作為設計決策。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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