[英]difference between two functions
用javascript
编写的这两个函数有什么区别?
function 1
var a, b;
this.get('obj').then(function(ob) {
a = ob.get('prop');
}.bind(this)).then(function() {
this.get('obj').reload();
}.bind(this)).then(function(){
b = this.get('obj.prop')
}.bind(this))
function 2
this.get('obj').then(function(ob) {
a = ob.get('prop');
}.bind(this)).then(function(){
this.get('obj').reload().then(function(){
b = this.get('obj.prop');
}.bind(this))
}.bind(this))
第一个是错误的。
我在您的代码中添加了一些标记以供参考。
这是片段2:
this.get('obj').then(function(ob) { // #1
a = ob.get('prop');
}.bind(this)).then(function() { // #2
this.get('obj').reload().then(function() { // #3
b = this.get('obj.prop');
}.bind(this))
}.bind(this));
现在,区别在于可以保证在重新加载方法完成之后将调用回调3,换句话说-变量b
仅在重新加载承诺解析后才会初始化。
另一方面,在第一个代码段中,变量b
根据reload
承诺的状态独立进行初始化。
演示 :这是一个演示,可让您直观地看到http://jsfiddle.net/fn93gz3w/的区别(删除false &&以运行代码段)。
最后,如果从第二个then
块返回新的Promise,则可以使第一个代码片段的行为与第二个代码片段的行为相同(在正确的情况下):在这种情况下,promise将被链接,并且带有b
初始化的第三个回调将等待直到reload
解析为止。 在我的演示中检查此行为。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.