我不知道如何正确地句话吧,所以我就放弃的例子:的Javascript返回功能,同时也获得了可变
我有表现为这样的发电机的功能:
function generateSomething(app) {
return new Promise(function (resolve, reject) {
var cookie;
var login = function (async_cb) {
// Ajax call to login
// This would return a cookie that I need to use for subsequent calls
}
var generate = function (async_cb) {
// This will use the cookie returned from login
}
async.series([
login,
generate,
generate,
generate,
function() {
resolve();
}
]);
});
}
我将有许多生成器文件,并且它们中有许多类似的功能(例如,login
)。所以我宁愿将它重构成一个全球帮助类。我也非常喜欢async
库,因为它是干净的格式。
这里谈到我的问题...
重构的login
功能,我有:
var Helper = {};
module.exports = Helper;
Helper.login = function (app) {
return function (async_cb) {
// Ajax to login
// Once done, call
aysnc_cb();
}
}
而且我会用它在我的发生器功能:
var Helper = require('./helper');
function generateSomething(app) {
return new Promise(function (resolve, reject) {
var cookie;
var generate = function (async_cb) {
// This will use the cookie returned from login
// Once done, call
aysnc_cb();
}
async.series([
Helper.login(app),
generate,
generate,
generate,
function() {
resolve();
}
]);
});
}
虽然问题是如何在这个例子中返回cookie
?我意识到我会使用Promise
并将结果返回resolve()
但这意味着我无法使用async.series([Helper.login, ...])
的整洁外观。
帮助表示赞赏。
唯一的问题是,在执行函数登录并返回结果后,变量被设置为异步 – Kousha