我的问题是,当我使用此代码时,我总是在ensureAppIsValid
中获得回调,并且异步系列中的那个似乎永远不会被解雇
var ReviewProcess = function (args) {
'use strict';
assert(args.application, 'Need an application to review');
this.app = args.application;
};
ReviewProcess.prototype.ensureAppIsValid = function (callback) {
'use strict';
if (this.app.isValid()) {
callback(null, this.app);
} else {
callback(this.app.validationMessage(), null);
}
};
ReviewProcess.prototype.processApplication = function (callback) {
'use strict';
async.series([
this.ensureAppIsValid(callback)
], function (err, callback) {
if (err) {
return callback(null, {
success: false,
message: err
});
}
callback(null, {
success: true,
message: 'Welcome to Mars'
});
});
};
答案 0 :(得分:0)
异步系列需要一系列函数作为要运行的任务。
你传递
config
但这是函数的调用,而不是函数本身。
试试这个:
git add/commit --interactive
答案 1 :(得分:0)
您似乎正在使用'回调'太多次,代码没有做你期望的事情。您正在将顶级回调传递给ensureAppIsValid()函数,因此一旦该函数执行,它就不会进入异步回调。看起来你也不需要在异步的跟进中进行额外的回调。
这个怎么样:
ReviewProcess.prototype.processApplication = function (callback) {
'use strict';
async.series([
this.ensureAppIsValid(cb)
], function (err) {
if (err) {
return callback(null, {
success: false,
message: err
});
}
callback(null, {
success: true,
message: 'Welcome to Mars'
});
});
};
答案 2 :(得分:0)
您不应将参数callback
传递给this.ensureAppIsValid()
。相反,在这里使用本地回调参数。例如,名为cb
。
尝试:
var ReviewProcess = function (args) {
'use strict';
assert(args.application, 'Need an application to review');
this.app = args.application;
};
ReviewProcess.prototype.ensureAppIsValid = function (callback) {
'use strict';
if (this.app.isValid()) {
callback(null, this.app);
} else {
callback(this.app.validationMessage(), null);
}
};
ReviewProcess.prototype.processApplication = function (callback) {
'use strict';
async.series([
this.ensureAppIsValid(cb)
], function (err, callback) {
callback(null, {
success: !err,
message: err? err : 'Welcome to Mars'
});
}
});
};
我也稍微改变了async.series
中的最终回调。现在它更加紧凑。