dojo.延迟和for循环

mrfwxfqh  于 2022-12-20  发布在  Dojo
关注(0)|答案(1)|浏览(258)

我有一个值的数组传递给一个函数,这个函数在数组上循环并在另一个方法中使用这些值。
这对于数组中的第一个值很有效,然后是所有其他项“我得到了一个错误:“此延迟已解决”。
我想结束了一个数组的响应,它目前停止后,1响应?
有人帮忙吗?谢谢!

function showQueryResults(searchResults){
    function getFacIds(arr){
        var def = new dojo.Deferred();
        for (var i = 0, iLen = arr.features.length; i < iLen; i++) {
            findParams.searchText = searchResults.features[i].attributes.ID;
            findTask.execute(findParams, function(response){
                def.callback(response);
            });
        };
        return def;
    };              
    getFacIds(searchResults).then(function(result){
        console.log(result);
    });
}
nle07wnf

nle07wnf1#

Deferred只能解析一次。您需要跟踪响应。
在Dojo 1.7语法中,假设没有错误:

require(["dojo/Deferred", "dojo/_base/array", "example/async"],
                                              function(Deferred, array, async) {
  var foo = function (arr) {
    var def, results, index;
    def = new Deferred();
    results = [];
    array.forEach(arr, function(item, index) {
      async(arr[index], function (r) {
        results.push(r);
        if(results.length === arr.length) {
          def.callback(results);
        }
      });
    }
    return def;
  };

  foo([1, 2, 3]).then(function (results) {
    //do something with the results
  });
}

相关问题