jQuery   发布时间:2022-04-19  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了你能解释为什么这个jQuery代码有效吗?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道它有效.我成功地实现了它.

$("#vehicle_application_product_id").autocomplete({
      minLength: 2,source: function(request,responsE) {
          var term = request.term;
          if (term in cachE) {
              response(cache[term]);
              return;
          }

          lastXhr = $.getJSON("/products/get_json_list",request,function(data,status,xhr) {
              cache[term] = data;
              if (xhr === lastXhr) {
                  response(data);
              }
          });
      }
  });

我就像一个脚本小家伙,有一些这样的东西.我自己永远不能写这个匿名函数,原因如下:

1)这个人怎么知道把参数“请求”和“响应”放在规范中?

2)以“lastXhr =”开头的行真的很神秘.最后还有另一个匿名函数.我意识到这可能是一个回调,这是在请求发送到指定的URL之后执行的.

3)匿名函数的最后一个条件:

if ( xhr === lastXhr ) {                                                                                      
    response( data );
}

那是什么呀?如果那么来自这个匿名块的第三个参数xhr等于.getJSON调用返回的vaue调用此匿名块,返回响应中的数据?

这真的是最困难的部分.我注意到3等于标志.这看起来像是非常先进的代码概念,我只是欣赏这背后的理由是为了让我能够成为一个更好的编码器.

解决方法@H_404_31@ @H_618_26@ >参数请求和响应将作为 documented here传递给分配给源选项的函数.本质上,插件承诺将这两个参数传递给回调,这就是您发信号通知您想要获取它们的方式.
>该函数一个回调,计划在请求完成时调用,而不是在简单发送之后调用.此外,在调用getJSON时,代码会将结果对象分配给lastXhr变量,以便记住它最后一次发出的请求.
>在回调中,您可以参以参数xhr形式完成的请求.所以,如果相当于写作:

if (the request that completed is the last request madE) {
    // ...
}

为什么这样?如果由于响应时间太长而无法返回且用户输入速度过快,请确保您不对请求的结果执行操作,因此您有多个未完成的请求.在这种情况下,你真的对你所做的最后一个的结果不感兴趣.

回调如何从外部作用域访问变量lastXhr?这是由于closure.
>这三个等号是什么?那是identity operator.

大佬总结

以上是大佬教程为你收集整理的你能解释为什么这个jQuery代码有效吗?全部内容,希望文章能够帮你解决你能解释为什么这个jQuery代码有效吗?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。