javascript - Dojo 获取,如何等待两个同时的异步获取?

标签 javascript asynchronous dojo fetch

嘿伙计们,我不太精通处理异步设计模式,而且我在编写执行两次异步数据提取的脚本时遇到了问题。

我正在使用 Dojo.data.api.Read.Fetch() 从不同的数据库进行两次 fetch() 调用。结果异步返回。但是,我必须交叉引用结果,所以我希望我的脚本在两个异步提取完成后继续。我不知道该怎么做,这就是问题所在。

知道提取的onComplete 字段以及如何使用它,但我看到的最佳案例解决方案是在首先取。我想同时进行这些提取。有办法做到这一点吗?

为了便于说明,这是我的程序的当前结构:

this.dict1.fetch({query:"blahblahblah", onComplete: function(items) { <em>something here?</em> }});<br/> this.dict2.fetch({query:"blahblahbleh", onComplete: function(items) { <em>or maybe something here?</em> }});<br/> this.orMaybeDoSomethingAfterBothFetches()

如有任何帮助,我们将不胜感激!

最佳答案

您可以为每个提取创建 dojo.Deferreds,然后使用 dojo.DeferredList 并将延迟添加到其中 - 参见 here .此解决方案允许您利用将“n”个函数添加到要调用的函数列表中的优势。它还利用了所有 dojo.Deferred 的回调和 errBack 功能。

var fetch1 = new dojo.Deferred();
fetch1.addCallback(this.dict1.fetch...);
var fetch2 = new dojo.Deferred();
fetch2.addCallback(this.dict2.fetch...);

var allFuncs = new dojo.DeferredList([fetch1, fetch2]);
var doStuffWhenAllFuncsReturn = function() {...};
allFuncs.addCallback(doStuffWhenAllFuncsReturn);

关于javascript - Dojo 获取,如何等待两个同时的异步获取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2967580/

相关文章:

asynchronous - Tokio react 器是否轮询每个组合器之间所有可能的 poll() 函数?

javascript - 如何获取 Dojo DateTextBox 小部件的内部值?

javascript - 访问 JSON 对象数组内的变量

javascript - 将本地 npm 库与 es6、babel 和 webpack 结合使用

php - 使用ajax时出现500内部服务器错误

asynchronous - perl6 "An operation first awaited"

javascript - 在 casperJs 测试中使用 jquery

java - 从 main 启动并行线程并等待结果

javascript - 是否可以断开 Dojo 中所有事件处理程序的连接?

javascript - Openlayers map 在初始加载时未正确调整大小。手动调整浏览器大小后可以很好地调整大小