📜  JQuery deferred.resolveWith() 方法(1)

📅  最后修改于: 2023-12-03 15:32:08.325000             🧑  作者: Mango

JQuery deferred.resolveWith() 方法

简介

JQuery deferred.resolveWith() 方法是 JQuery 的异步处理机制中的一种,它会立即触发所有添加到 deferred 对象的成功处理函数,也就是done回调函数。同时,可以指定done回调函数中,this关键字指向的是什么。

用法

deferred.resolveWith() 方法的语法如下:

deferred.resolveWith(context [, args ] )

其中,

  • context:上下文对象,可选参数,指定done回调函数中this关键字所代表的对象。
  • args:参数数组,可选参数,用于传递参数给done回调函数。

该方法会立即触发所有添加到 deferred 对象的成功处理函数,同时将done回调函数中的上下文对象指向context所代表的对象。

示例
var dfd = $.Deferred();

// 添加两个处理函数
dfd.done(function(a, b) {
  console.log("Hello " + a + " " + b);    // Hello John Doe
});
dfd.done(function(a, b) {
  console.log("Goodbye " + a + " " + b);  // Goodbye John Doe
});

// 触发 deferred.resolveWith() 方法,传递上下文对象和参数
dfd.resolveWith({ name: "John" }, [ "John", "Doe" ]);

上述代码中,我们创建了一个dfd对象,并向其添加两个成功处理函数(done回调函数)。然后,我们使用resolveWith()方法触发了这两个回调函数,并传递上下文对象和参数。

得到的结果会在控制台输出如下内容:

Hello John Doe
Goodbye John Doe

值得注意的是,在注册回调函数时,如果通过deferred.done()方法注册,那么在执行dfd.resolveWith()方法之前,添加到 deferred 对象中的处理函数都不会被执行。如果想要在dfd.resolveWith()方法之后再添加处理函数,可以使用deferred.always()方法或者deferred.then()方法。