WinJS.Binding.List.createFiltered: 谓词中的异步调用

WinJS.Binding.List.createFiltered: async call in predicate

本文关键字:异步 调用 谓词 Binding List createFiltered WinJS      更新时间:2023-09-26

下面代码中的谓词将始终返回 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部分中,但实际上它会同步运行,因为您将在返回之前等待承诺的结果。