如何让链式函数在它之前等待函数执行正确?让链式函数等待对方执行
我从模块此摘录:
var ParentFunction = function(){
this.userAgent = "SomeAgent";
return this;
}
ParentFunction.prototype.login = function(){
var _this = this;
request.post(
url, {
"headers": {
"User-Agent": _this.userAgent
}
}, function(err, response, body){
return _this;
})
}
ParentFunction.prototype.user = function(username){
this.username = username;
return this;
}
ParentFunction.prototype.exec = function(callback){
request.post(
anotherURL, {
"headers": {
"User-Agent": _this.userAgent
}
}, function(err, response, body){
callback(body);
})
}
module.exports = parentFunction;
这是从我的服务器中:
var pF = require("./myModule.js"),
parentFunction = new pF();
parentFunction.login().user("Mobilpadde").exec(function(data){
res.json(data);
});
的问题是,该user
-function不会等待login
到完成(意思是,它在登录之前执行返回_this
)。那么我该如何让它等待呢?
哦,dangit!我真的希望能够避免将对方的功能堆叠在一起。无论如何,我只是用缺少的exec函数更新了我的问题(并不是说它以任何方式改变了我的问题,但仍然如此)。 – Mobilpadde 2015-04-03 03:02:05
@Mobilpadde - 查看我添加到我的答案的评论。我开始设计一个队列的路径,这个队列可以嵌入到你的对象中以进行链接工作,但是混合同步和异步操作的组合,然后在异步操作完成之后尝试找出适当的错误处理策略,问题变成一个相当大的问题。我建议采用不同的方法。如果所有操作都是同步的,则链接很容易。异步操作的混合使事情变得复杂。 – jfriend00 2015-04-03 03:15:51
@Mobilpadde - 我添加了一个承诺风格的实现。 – jfriend00 2015-04-03 03:26:13