📅  最后修改于: 2023-12-03 15:32:08.325000             🧑  作者: Mango
JQuery deferred.resolveWith() 方法是 JQuery 的异步处理机制中的一种,它会立即触发所有添加到 deferred 对象的成功处理函数,也就是done
回调函数。同时,可以指定done
回调函数中,this
关键字指向的是什么。
deferred.resolveWith() 方法的语法如下:
deferred.resolveWith(context [, args ] )
其中,
done
回调函数中this
关键字所代表的对象。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()
方法。