![](/img/trans.png)
[英]Advantages and disadvantages of using “()” while calling function in Javascript?
[英]Advantages/Disadvantages of Passing a Function into Deferred's Constructor
在玩Deferred的游戏时,我看到了许多不同的用法组合。 多数是相同的,但偶尔会看到一些细微的差别。
例如...
通常,我看到以下内容 :
在这里,我们仅使用Deferred。
// NORMALLY I SEE THIS...
function doSomething(){
var deferred = $.Deferred();
var myClass = new MyClass();
myClass.doSomething(function () {
deferred.resolve();
});
return deferred.promise();
};
我偶尔会这样:
在这里,我们将一个函数传递给Deferred的构造函数...然后使用它。
// SOMETIMES I SEE THIS...
function doSomething() {
var deferred = $.Deferred(function (deferred) {
//Q: Is there an advantage to doing this instead?
//Q: Is this a mis-use?
var myClass = new MyClass();
myClass.doSomething(function () {
deferred.resolve();
});
});
return deferred.promise();
};
我的问题是:
我还没有看到方法2引起的任何问题。因此,我正在这里寻找真正的见识。
代替做第二个有好处吗?
不可以,除非您喜欢回调而无法兑现承诺的目的。
这是对构造函数的滥用吗?
不。 jQuery的文档
jQuery.Deferred([beforeStart])
beforeStart Type: Function( Deferred deferred ) A function that is called just before the constructor returns.
这种做法是否会引起我尚未见过的问题?
不,不是这样,除非您打算在其他地方使用myClass
,因为在回调中定义了myClass
是不可能的。
结论:
最后,这更多是个人喜好。 老实说,解决方案1看起来更干净。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.