我不知道如何正確地句話吧,所以我就放棄的例子:的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