将函数传递到Deferred's构造函数
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 deffered doc
jQuery.Deferred([beforeStart])
beforeStart Type: Function( Deferred deferred ) A function that is called just before the constructor returns.
这种做法会造成我还没看到的问题吗?
不,它不会,除非您打算在其他地方使用myClass
,这是不可能的,因为它是在回调中定义的。
结论:
归根结底,这更多的是个人偏好。老实说,解决方案1似乎更干净。
相关文章:
- ES6构造函数返回基类的实例
- 使用Google Visualization动态调用构造函数
- javascript中对象构造函数中的var属性与this.properties
- 理解typescript中的构造函数接口
- 为什么构造函数不是构造函数
- 如果在构造函数中有“返回”,则在 JavaScript 中的新运算符中做了什么
- 拦截对构造函数的调用
- 使用闭包共享构造函数参数
- 文本表示法VS.构造函数,用于在JavaScript中创建对象
- 从js引擎的角度来看闭包和构造函数是如何工作的
- 如何使用此从对象访问构造函数
- Javascript:为什么是构造函数's __proto__属性Empty(){}
- 当一个重要的构造函数参数丢失时应该发生什么
- Chrome Javascript日期构造函数错误
- 如何使用构造函数's的输出,以便将值插入到对象中
- 为什么在调用父构造函数时在[]中发送数据
- 构造函数函数闭包变量
- ES6类是否与构造函数相同
- 构造函数中的事件处理程序与构造函数外的事件处理函数的行为不同
- 将函数传递到Deferred's构造函数