我正在使用 Windows 8 JavaScript 应用程序,但 WinJS.Promise 没有按预期工作。这是我的异步方法...
function MyFiveSecondFunctionAsync() {
return new WinJS.Promise(function (c, e, p) {
var start = new Date().getTime();
var delay = 5000;
while (new Date().getTime() < start + delay) p();
c();
});
}
这就是我所说的......
document.querySelector("#status").innerText = "working";
MyFiveSecondFunctionAsync().done(function () {
document.querySelector("#status").innerText = "done";
});
document.querySelector("#status").innerText = "free";
这是在按钮单击中。我希望我的状态 div 在单击按钮后非常简短地说“工作”,然后说“空闲”5 秒,最后在 5 秒延迟完成时说“完成”。相反,UI 线程阻塞了 5 秒,然后状态 div 显示“空闲”。
我认为执行将返回到将状态设置为“free”的行,但调试表明它在此之前达到了 promise 函数。因此状态在 5 秒后设置为“完成”,然后设置为“空闲”。换句话说,我的异步函数只是没有异步执行。