失败后重新开始承诺
Restart a promise after fail
我使用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);
})
您需要将其封装在一个可以再次调用的函数中。承诺本身不能"重新启动"。
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)
相关文章:
- 如何在从顶部滚动时暂停转盘/滑块,并在滚动到顶部时重新开始
- 更新画布上的高度/宽度并重新开始绘制
- 如果我重新加载页面,倒计时将重新开始 - 如何设置修复
- 重新开始并承诺取得进展
- JQuery 自动收报机通过减速和停止然后重新开始来播放
- 如何重置 jquery 动画并重新开始
- 失败后重新开始承诺
- 清除答案,重新开始JS计算器
- 每8小时到达00:00:00时刷新页面并重新开始倒计时
- 是否存在循环“;重新开始”;
- jQuery添加类数字到x并重新开始
- For循环jQuery,在4个项目后重新开始
- 如何在用户重新开始后删除动态创建的jQuery对象?在纸上
- 在THREE.js中暂停后重新开始游戏
- 倒计时在凌晨3点,上午9点,下午3点和晚上9点重新开始
- 如何从元素中清除css重新开始
- 重置计数器,重新开始
- plupload:重新开始上传(使用分块)
- 如何修改CSS3滚动框动画无限循环,而不是重新开始
- 如何使从02:00开始的计时器达到00:00,然后在06:00重新开始?