gpt4 book ai didi

javascript - 将函数传递给 Deferred 的构造函数的优点/缺点

转载 作者:行者123 更新时间:2023-11-30 16:30:04 25 4
gpt4 key购买 nike

在使用 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 出现任何问题。因此,我正在寻找真正的见解。

最佳答案

Is there an advantage to doing the 2nd one instead?

不,除非你喜欢违背 promise 目的的回调。


Is this a mis-use of the constructor?

没有。 jQuery deffered doc

jQuery.Deferred( [beforeStart ] )

beforeStart
Type: Function( Deferred deferred )
A function that is called just before the constructor returns.

Does this practice create issue I just haven't seen yet?

不,它不会,除非您打算在其他地方使用 myClass,这是不可能的,因为它是在您的回调中定义的。

结论:

归根结底,这更多是个人喜好。老实说,解决方案 1 似乎更干净。

关于javascript - 将函数传递给 Deferred 的构造函数的优点/缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33446070/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com