【发布时间】:2015-09-29 18:44:33
【问题描述】:
所以我想写一些类似于从 IndexedDB 文档中截取的内容:
var req;
var store = getStore();
req = store.count();
req.onsuccess = function(evt) {
console.log("success: " + evt.result);
};
req.onerror = function(evt) {
console.error("add error", this.error);
};
https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API/Using_IndexedDB
并开始想知道为什么 javascript 允许在调用后定义(延迟?)回调以及为什么它不会导致竞争条件? 有人可以分享一下吗?
那么,javascript 如何确保在分配回调之前不执行异步调用?
谢谢!
【问题讨论】:
-
JS 是单线程的,因此
store.count()调用的异步部分将在您当前的代码之后执行,因此所有回调都已设置。 -
“您当前的代码”是什么意思? js中解析时间和执行时间不一样吗?
-
我在您的代码中没有看到任何承诺或延期???如果有的话,解释会有所不同。
-
无论是否有延迟,“异步”调用可能会立即执行而不会造成任何伤害。它是调用异步触发的回调的事件。
标签: javascript promise race-condition deferred deferred-execution