2016-02-26 29 views
0

我试图让我的脑袋围绕如何执行一些异步请求,但将一个函数传递给回调函数。像在我的GetPosts()中,我传递一个函数。所以我的问题是如何处理async.series函数中的回调,同时能够传递一个函数来处理来自这些系列回调的回调。目前我打电话给cb,但不是“回拨”,但不知道周围的工作是什么。那有意义吗?将函数传递给Node.js中的嵌套回调

var request = require("request"); 
var async = require("async"); 

Context.prototype.GetPosts = function (params, cb) { 
    async.series({ 
     one: function (callback) { 
      request("http://jsonplaceholder.typicode.com/posts/1", function (error, response, body) { 
       if (!error && response.statusCode == 200) { 
        return cb(body); 
       } 
       cb(null, result); 
      }); 
     }, 
     two: function (callback) { 
      request("http://jsonplaceholder.typicode.com/posts/1", function (error, response, body) { 
       if (!error && response.statusCode == 200) { 
        return cb(body); 
       } 
       cb(null, result); 
      }); 
     } 
    }, 
    function (err, results) { 
    }); 
}; 

var params = new Params("MyPosts"); 

Context.GetPosts(params, function (cb) { 
    console.log("Response: " + cb); 
}); 

在此先感谢您。

回答

0

你打电话给callback,你现在打电话给cb,让Async知道是时候继续了,然后你在GetPosts函数底部的最后回调中调用cb,因为当整个系列是完成。

通上的错误,这样你就可以处理他们在回调GetPosts

var request = require("request"); 
var async = request("async"); 

Context.prototype.GetPosts = function (params, cb) { 
    async.series({ 
     one: function (callback) { 
      request("http://jsonplaceholder.typicode.com/posts/1", function (error, response, body) { 
       if (error) return callback(error, null); 
       if (response.statusCode == 200) return callback(null, body); 
       return callback('err', null); 
      }); 
     }, 
     two: function (callback) { 
      request("http://jsonplaceholder.typicode.com/posts/1", function (error, response, body) { 
       if (error) return callback(error, null); 
       if (response.statusCode == 200) return callback(null, body); 
       return callback('err', null); 
      }); 
     } 
    }, 
    function (err, results) { 
     if (err) { 
      return cb(err, null); 
     } else { 
      return cb(null, results); 
     } 
    }); 
}; 

var ctx = new Context(); 

ctx.GetPosts(new Params("MyPosts"), function (err, data) { 
    if (err) { 
     // handle error 
    } else { 
     console.log("Response: " + data); 
    }   
}); 
+0

谢谢你,伙计!你大大地平息了我的头痛。 – AlexC

+0

@AlexC - 没问题,男人! – adeneo

相关问题