标签:
绝对不能对异步回调函数(即使在数据已经就绪)进行同步调用。
如果对异步回调函数进行同步调用的话,处理顺序可能会与预期不符,可能带来意料之外的后果。
对异步回调函数进行同步调用,还可能导致栈溢出或异常处理错乱等问题。
如果想在将来某时刻调用异步回调函数的话,可以使用 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==‘);
标签:
原文地址:http://www.cnblogs.com/yoyoone23/p/4244461.html