首页 > 代码库 > 2015/01/23 – 不要对异步回调函数进行同步调用
2015/01/23 – 不要对异步回调函数进行同步调用
绝对不能对异步回调函数(即使在数据已经就绪)进行同步调用。
如果对异步回调函数进行同步调用的话,处理顺序可能会与预期不符,可能带来意料之外的后果。
对异步回调函数进行同步调用,还可能导致栈溢出或异常处理错乱等问题。
如果想在将来某时刻调用异步回调函数的话,可以使用
setTimeout
等异步API。
function onReady(fn) { var readyState = document.readyState; if (readyState == ‘interactive‘ || readyState === ‘complete‘) { setTimeout(fn, 0); } else { window.addEventListener(‘DOMContentLoaded‘, fn); }}onReady(function () { console.log(‘DOM fully loaded and parsed‘);});console.log(‘==Starting==‘);
function onReadyPromise() { return new Promise(function (resolve, reject) { var readyState = document.readyState; if (readyState == ‘interactive‘ || readyState === ‘complete‘) { resolve(); } else { window.addEventListener(‘DOMContentLoaded‘, resolve); } });}onReadyPromise().then(function () { console.log(‘DOM fully loaded and parsed‘);});console.log(‘==Starting==‘);
js Promise 迷你书
2015/01/23 – 不要对异步回调函数进行同步调用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。