当前位置: 首页 > 面试题库 >

$ .when.apply($,someArray)有什么作用?

孙成益
2023-03-14
问题内容

我正在阅读关于递延和承诺的文章,并不断遇到$.when.apply($,someArray)。我不清楚这到底是做什么的,正在寻找一种解释,指出哪一 可以正常工作(而不是整个代码片段)。这里是一些上下文:

var data = [1,2,3,4]; // the ids coming back from serviceA
var processItemsDeferred = [];

for(var i = 0; i < data.length; i++){
  processItemsDeferred.push(processItem(data[i]));
}

$.when.apply($, processItemsDeferred).then(everythingDone);

function processItem(data) {
  var dfd = $.Deferred();
  console.log('called processItem');

  //in the real world, this would probably make an AJAX call.
  setTimeout(function() { dfd.resolve() }, 2000);

  return dfd.promise();
}

function everythingDone(){
  console.log('processed all items');
}

问题答案:

.apply用于调用带有参数数组的函数。它接受数组中的每个元素,并将每个元素用作函数的参数。
.apply也可以this在函数内部更改context()。

因此,让我们来$.when。过去常说“当所有这些诺言都得到解决时……采取行动”。它需要无限(可变)数量的参数。

就您而言,您有各种各样的承诺;您不知道要传递给多少参数$.when。将数组本身传递给$.when是行不通的,因为它期望参数是promise,而不是数组。

那就是.apply进入的地方。它接收数组,并$.when以每个元素作为参数进行调用(并确保将this其设置为jQuery/
$),然后一切正常:-)



 类似资料:
  • 问题内容: 如果一个网页以…开头有什么区别 并且如果页面以 如果没有区别,我想我可以忽略元标头,因为我只想在所有IE版本中以最标准的方式呈现它。 问题答案: 这个答案是几年前发布的,现在的问题确实应该是 您_是否 _应该考虑 在您的网站上 使用 标记? 微软对其浏览器所做的更改(更多有关以下内容)。 根据您支持的Microsoft浏览器,您可能不需要继续使用该标记。如果您需要支持IE9或IE8,那

  • Java中Object有一个方法: public native int hashcode(); (1)hashcode()方法的作用 hashcode()方法主要配合基于散列的集合一起使用,比如HashSet、HashMap、HashTable。 当集合需要添加新的对象时,先调用这个对象的hashcode()方法,得到对应的hashcode值,实际上hashmap中会有一个table保存已经存进去

  • 问题内容: 我是Java的新手,刚刚遇到了在方法中使用“ Throws”关键字的教程。我对此进行了一些研究,但仍然不太了解。 从我到目前为止所看到的,它告诉编译器在该特定方法中可能抛出某些异常。为什么我们需要告诉编译器呢?我已经在我的方法中仅使用try- catch语句制作了许多程序,并且效果很好-当然,这些try-catch语句可以管理异常,对吗? 问题答案: 您可以使用和如您所说 在 方法 内

  • 本文向大家介绍什么是React.forwardRef?它有什么作用?相关面试题,主要包含被问及什么是React.forwardRef?它有什么作用?时的应答技巧和注意事项,需要的朋友参考一下 React.forwardRef 会创建一个React组件,这个组件能够将其接受的 ref 属性转发到其组件树下的另一个组件中。这种技术并不常见,但在以下两种场景中特别有用: 转发 refs 到 DOM 组件

  • 本文向大家介绍什么是zoom?它有什么作用?相关面试题,主要包含被问及什么是zoom?它有什么作用?时的应答技巧和注意事项,需要的朋友参考一下 zoom是缩放比例,可以将元素进行缩放。 和css3中的transform:scale() 作用类似. 两者区别在于缩放的参照点不一样,zoom针对元素左上角,scale针对元素正中心

  • 问题内容: 精油 这到底是什么! 编辑:如果可以的话,请您写一两行并说明其工作原理? 问题答案: 试试这个简单的程序,命名为 并尝试执行 注意什么是argv。