下面代码中的谓词将始终返回false。 我的问题是如何“等待”异步操作并将该结果用作谓词结果?
return someList.createFiltered(function(item) {
var filter = false;
var promise = someOperationAsync();
promise.done(function(b) {
filter = b;
});
return filter;
});
答案 0 :(得分:1)
不幸的是,WinJS.Binding.List不支持异步谓词。我能想到的唯一方法就是这样做 - 即。同步阻止UI线程 - 最后坐在一个循环中,观察在已完成的处理程序和错误处理程序中设置的布尔标志(在这种情况下你必须使用一个错误处理程序来改变那旗帜)。
您打算使用异步调用完成什么?应用程序启动时是否可以缓存这些结果,以便您可以对该缓存数据进行同步查找?
答案 1 :(得分:-1)
您需要返回承诺,然后从调用函数调用'then'或'done'。
或者你可以将return filter;
放在promise.done部分中,但是然后它会有效地同步运行,因为你在返回之前等待promise的结果。