我使用 Nodejs 和 Q 来运行一系列异步函数。如果一个函数失败,我想运行另一个函数,然后再次启动该序列。这是原样:
var promise = database.getUserCookies(user)
.then(function (data){
return proxy.search(data);
})
.fail(function (data) {
if (data.rejected === 302) {
var relogin = database.fetchAuth(data)
.then(function (data) {
return proxy.login(data)
})
.then(function (data){
return database.saveCookies(data);
})
.then(function (data){
//Restart the promise from the top.
})
}
})
.then(function (data){
return responser.search(data);
})
您需要将其包装在一个可以再次调用的函数中。 Apromise其本身无法“重新启动”。
var promise = (function trySearch() {
return database.getUserCookies(user)
.then(proxy.search)
.fail(function(err) {
if (err.rejected === 302) { // only when missing authentication
return database.fetchAuth(data)
// ^^^^^^
.then(proxy.login)
.then(database.saveCookies)
.then(trySearch) // try again
} else
throw err;
})
}())
.then(responser.search)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)