WinJS.Binding.List.createFiltered: 谓词中的异步调用
WinJS.Binding.List.createFiltered: async call in predicate
下面代码中的谓词将始终返回 false。我的问题是我如何"等待"异步操作并将该结果用作谓词结果?
return someList.createFiltered(function(item) {
var filter = false;
var promise = someOperationAsync();
promise.done(function(b) {
filter = b;
});
return filter;
});
不幸的是
,WinJS.Binding.List不支持异步谓词。我能想到的唯一方法就是同步阻止 UI 线程 - 是坐在最后的循环中,观察在已完成的处理程序和错误处理程序中设置的布尔标志(在这种情况下,您必须在 promise 上使用错误处理程序来更改该标志)。
你想用异步调用完成什么?是否可以在应用程序启动时缓存这些结果,以便您可以对该缓存的数据进行同步查找?
你需要返回承诺,然后从调用函数调用"then"或"done"。
或者,您可以将return filter;
放在promise.done部分中,但实际上它会同步运行,因为您将在返回之前等待承诺的结果。
相关文章:
- 如何使用异步调用更改工厂的变量
- 使变量可用于不带闭包的异步调用
- 需要收集Javascript nodejs异步调用
- 如何使用jQuery等待来自回调的异步调用
- 使用模态库从嵌套的异步调用中生成javascript同步代码
- 在forEach内部进行异步调用
- jQuery没有指定异步调用级别async:false
- SPA异步调用在IE 11中不起作用
- Ember.js-模型find()方法中的异步调用
- Javascript/JQuery处理并发/异步调用和数据竞争
- 在异步调用返回之前隐藏页面
- ExtJs 处理异步调用
- ES6:在异步调用中使用生成器
- Angular js - 异步调用 $scope.users 后不更新模态值
- 在每个循环上完成异步调用,然后转到下一个节点 js
- 从异步调用返回数组,然后为数组的每个元素返回其他异步调用
- 使用 AngularJS 的异步调用
- 循环内部的Javascript异步调用
- 使用Canvas和ForEach处理异步调用
- JavaScript/promise,对sharepoint的多个异步调用