如何更好地停止一个承诺链并开始另一个承诺链
How to better stop one promise chain and start another?
如果我有承诺链,并且它成功完成
var a = new Promise(function(resolve, reject) {
...
})
.then(...)
.then(...)
.then(function(val) {
console.log('done');
})
我应该如何启动同步代码或其他承诺链?也许使用window.setTimeout()
我不想在 last .then() 中的函数中调用同步代码,因为这个函数将一直存在到同步代码结束。而且我想将代码分为两部分,因为这些部分执行不同的逻辑。
编辑
我应该这样做吗?
// this first pormise do auth work
var auth_work = function() {
return new Promise(function(resolve, reject) {
...
})
.then(...)
.then(...)
.then(function(val) {
console.log('done');
// when auth procedure is finised I want to download resources
return download_resources();
});
}
var download_resources = function(){
return new Promise(function(resolve, reject) {
...
})
.then(...)
.then(...)
.then(function(val){
return do_actual_work();
});
}
var do_actual_work = function() {
return new Promise(function(resolve, reject) {
...
})
.then(...)
.then(...)
.then(function(val) {
...
});
}
var p = auth_work();
如果在最后一个 .then() 中我会这样做怎么办window.setTimeout(1, download_resources);
如果在最后
.then()
我会这样做怎么办window.setTimeout(1, download_resources);
这完全没有意义,原因有二:
- 人为地拖延任何事情都没有意义。您的承诺代码已经是异步的。
- 您将无法从承诺链中返回
download_resources
的结果
相关文章:
- 从工作日结束到下一个工作日开始的完整日历JS包装时间
- 一个承诺换多个承诺-并发问题
- WinJS,从可能是异步的函数返回一个承诺,也可能不是异步的
- 在jQuery中,.state()如何确定一个承诺是挂起的、已解决的还是被拒绝的
- 转换嵌套'对于'循环成一个承诺,为了一个承诺?嵌套承诺
- 当我尝试在循环中使用.push时,它似乎比间隔数提前一个阶段开始,这似乎会导致溢出
- 如何通过Bluebird承诺您自己的javascript api,该api使用另一个承诺的api
- jasmine 2.0测试angularjs的工厂方法,这是一个承诺
- 做一些 ajax 并使用 getJSON 返回一个承诺
- 在 AngularJS 中声明一个承诺,并带有命名的成功/错误回调
- 链承诺.all 与从上一个承诺返回的数组.all.
- 如何更好地停止一个承诺链并开始另一个承诺链
- 同时循环承诺,直到另一个承诺结束
- 在angular.extend()中向变量返回一个承诺的值
- 茉莉花单元测试模拟一个承诺
- 我能不能早点结束一个承诺
- 如何使用 Parse.promise javascript 定义一个承诺数组并获取结果数组 [parse.com]
- 茉莉花测试一个承诺,然后功能
- 我可以创建一个承诺来检查变量是否设置为角度吗?
- 在 then() 中断开 for 循环 在一个承诺