mik*_*ana 1 javascript flow-control promise es6-promise
我试图理解一些有一种新颖的承诺方法的代码:
var sequence = Promise.resolve();
sequence = sequence.then(
function() {
// success function
}
);
sequence = sequence.then(
function(keyPair) {
// success function
},
function(err) {
// err function
}
);
sequence = sequence.then(
function(keyPair) {
// success function
},
function(err) {
// err function
}
);
Run Code Online (Sandbox Code Playgroud)
这与正常的链式.then方法有何不同?使用安全吗?
这与正常的链式
.then方法有何不同?
一点也不.您可以消除该sequence变量并.then()直接链接方法调用,并从承诺中获得完全相同的行为.
使用安全吗?
是.
我为什么要用它?
通常,你不应该.它(显然)只是令人困惑,不需要那个sequence变量,它只是更长.使用描述性名称创建变量可以使代码更加冗长和易于理解,但这些代码sequence毫无意义.
但是,有一个优点:您可以构建动态链.您可以将这些赋值中的一些放在if块中,甚至可以使用循环来构建可变长度和行为的promise链.通过在执行promise回调之前同步评估条件,与将所有控制流放在promise回调中相比,这甚至可能对性能有利(尽管在内存中创建了大量的promise对象).无论如何,应该使用不同的描述性变量来实现这种方法,而不是重复地重新分配给同一个变量.