Gow*_*m S 4 javascript extjs promise
当我对单个 Promise 对象有多个 thenable 函数时,它会起作用吗?在这种情况下我不想嵌套。我想对同一个承诺对象执行不同的操作。
var a = 0,
t = null,
promiseFun = function () {
return new Ext.Promise(function (resolve, reject) {
t = setInterval(function () {
if (a == 1) {
resolve();
clearInterval(t);
} else if (a == 2) {
reject();
clearInterval(t);
}
}, 1000);
})
};
var promiseObj = promiseFun();
//handler one
promiseObj.then(function () {
console.log('resolved 1')
}, function () {
console.log('rejected 1')
}).then(function () {
console.log('resolved Nest')
}, function () {
console.log('rejected Nest')
});
//handler two- this is valid ?
promiseObj.then(function () {
console.log('resolved 2')
}, function () {
console.log('rejected 2')
});
//OUTPUT:
//resolved 1
//resolved 2
//resolved Nest
Run Code Online (Sandbox Code Playgroud)
或者我需要用Defered换行吗?
当我对单个 Promise 对象有多个 thenable 函数时,它会起作用吗?
是的,效果很好。这称为分支而不是链接。
如果你有这个:
let p = somePromiseGeneratingFunction();
p.then(...).then(...);
p.then(...).then(...);
Run Code Online (Sandbox Code Playgroud)
然后,您只需创建两个独立的 Promise 链,每个 Promise 链都会在p解析时启动。如果这是您想要的逻辑,那就完全没问题。
您可以保证的一件事是,第一个p.then()处理程序将在第二个处理程序被调用之前被调用p.then(),但是如果任一链中还有进一步的异步操作,那么它们之后将独立运行,并且不再相互协调。它们是独立且独立的 Promise 链,根据自己的异步操作的时间运行。这就是为什么它被称为“分支”。一条链分支成两条链。
请参阅promise.then.then 与promise.then 之间是否有区别;Promise.then对此主题进行更多讨论。
| 归档时间: |
|
| 查看次数: |
1871 次 |
| 最近记录: |