【问题标题】:callback function argument in javascript / jQueryjavascript / jQuery中的回调函数参数
【发布时间】:2015-11-12 07:26:48
【问题描述】:

试图通过一本书来学习 jQuery ui。我遇到了这段代码

 $("#autocomplete").autocomplete({
     minLength: 2,
     source: function (request, response) {
         $.getJSON("https//api.github.com/search/repositories", {
             q: request.term + " in:name"
         })
             .then(function (data) {
             var matches = $.map(data.items, function (repo) {
                 return repo.full_name;
             });
             response(matches);
         });
     }
 });

.then(function(data){})中,数据对象是通过$.getJSON()函数的结果传递的吗?我检查了 jQuery API。我认为在这种情况下,我正在处理 doneFilter 回调,但 API 没有提及函数中传递的任何默认对象。谁能解释更多关于这种行为的信息?为什么数据对象包含项目属性?

【问题讨论】:

  • dataJSON response,当对您的服务器的请求得到解决时,您会得到它
  • .items 是在data 对象上定义的属性
  • 为什么不直接使用.getJSON()success回调呢?
  • 嗨,卡拉姆先生,感谢您的回复。那么数据对象总是存在的吗?像事件对象?
  • 数据是您的服务器返回的内容

标签: javascript jquery


【解决方案1】:

您正在处理一个承诺对象。 从 jQuery 1.5 开始,所有 jQuery 的 Ajax 方法都返回 XMLHTTPRequest 对象的超集。这个由 $.getJSON() 返回的 jQuery XHR 对象或“jqXHR”实现了 Promise 接口,为它提供了 Promise 的所有属性、方法和行为。

所以 .then() 将在异步调用完成后被调用,它将使用数据中的成功响应对象作为输入。

关于承诺的更多细节

http://davidwalsh.name/write-javascript-promises

【讨论】:

    猜你喜欢
    • 2012-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-11
    • 1970-01-01
    • 1970-01-01
    • 2016-04-10
    相关资源
    最近更新 更多