为了账号安全,请及时绑定邮箱和手机立即绑定

如何处理jQueryDeferreds数组?

如何处理jQueryDeferreds数组?

SMILET 2019-07-11 16:29:58
如何处理jQueryDeferreds数组?我有一个需要按一定顺序加载数据的应用程序:根URL,然后是模式,然后使用模式和各种数据对象的URL初始化应用程序。当用户导航应用程序时,将加载数据对象,并根据架构验证数据对象并显示数据对象。当用户对数据进行遍历时,模式提供了第一次验证。初始化有问题。我使用Ajax调用获取根对象$.When(),然后创建一个承诺数组,每个模式对象一个。这很管用。我看到控制台里的东西了。然后,我看到了对所有模式的提取,因此每个$.ajax()调用都能工作。get chschema()确实会返回一系列承诺。但是,FinalWHERE()子句从未触发,而“已完成”一词从未出现在控制台上。jQuery-1.5的源代码似乎意味着“NULL”是可以接受的对象,可以传递到$.Wh.Apply(),因为如果没有传入对象,那么当()构建一个内部的Deferred()对象来管理列表时,它是可以接受的。这使用了Futures.js。如果不是这样,应该如何管理jQueryDeferreds数组?    var fetch_schemas, fetch_root;     fetch_schemas = function(schema_urls) {         var fetch_one = function(url) {             return $.ajax({                 url: url,                 data: {},                 contentType: "application/json; charset=utf-8",                 dataType: "json"             });         };         return $.map(schema_urls, fetch_one);     };     fetch_root = function() {         return $.ajax({             url: BASE_URL,             data: {},             contentType: "application/json; charset=utf-8",             dataType: "json"         });     };     $.when(fetch_root()).then(function(data) {         var promises = fetch_schemas(data.schema_urls);         $.when.apply(null, promises).then(function(schemas) {             console.log("DONE", this, schemas);         });     });
查看完整描述

3 回答

?
慕森卡

TA贡献1806条经验 获得超8个赞

你在找

$.when.apply($, promises).then(function(schemas) {
     console.log("DONE", this, schemas);}, function(e) {
     console.log("My ajax failed");});

这也会起作用(对于某些工作的价值,它不会修复损坏的Ajax):

$.when.apply($, promises).done(function() { ... }).fail(function() { ... });`

你会想通过$而不是null所以this$.whenjQuery..对源来说这不重要,但它比传递更好null.

通过将$.ajax替换为$.when和样本作品

所以,这要么是Ajax请求中的问题,要么是传递到FETCH_Schema的数组的问题。


查看完整回答
反对 回复 2019-07-11
  • 3 回答
  • 0 关注
  • 401 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信