📜  jQuery deferred.progress() 方法(1)

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

jQuery deferred.progress() 方法

简介

jQuery deferred.progress() 是 jQuery 的延迟对象(Deferred Object)方法之一,用于绑定一个或多个处理程序(progress handlers),它们在每次延迟对象触发进度更新时执行。可以通过 deferred.notify() 方法来触发该事件。该方法最初是与 AJAX 相关的,但不仅限于此用法。

语法
deferred.progress(progressCallbacks)
参数
  • progressCallbacks:可选参数,指定一个或多个进度处理程序。可以是函数或函数数组。
返回值

返回一个延迟对象。

使用示例
var deferred = $.Deferred();

// 绑定一个进度处理程序
deferred.progress(function(progressValue) {
  console.log('进度更新:' + progressValue);
});

deferred.notify(50); // 触发进度更新事件并传递参数

上面的代码中,当 deferred 延迟对象调用 notify() 方法并传递参数 50 时,绑定的进度处理程序会被执行,并在控制台输出 进度更新:50

注意事项
  • 该方法返回的是延迟对象本身,可实现链式调用。
  • 如果绑定的进度处理程序在 deferred 延迟对象已经被解决或被拒绝时添加,它们会立即执行。
  • 如果绑定的进度处理程序在 deferred 延迟对象已经触发进度更新时添加,它们会立即执行并传递最后一个进度值。如果该方法中没有传递参数,那么传递的值为 undefined
多个进度处理程序
var deferred = $.Deferred();

// 绑定多个进度处理程序
deferred.progress([function(progressValue) {
  console.log('进度更新1:' + progressValue);
}, function(progressValue) {
  console.log('进度更新2:' + progressValue);
}]);

deferred.notify(50); // 触发进度更新事件并传递参数

上面的代码中,绑定了两个进度处理程序,当 deferred 延迟对象调用 notify() 方法并传递参数 50 时,两个处理程序都会被执行并在控制台输出相应的信息。

总结

通过 jQuery deferred.progress() 方法,可以在延迟对象触发进度更新时执行绑定的进度处理程序,实现针对异步操作的进度跟踪和交互。在实际开发中,该方法可以广泛应用于如文件上传、数据下载等涉及进度条展示的场景。