码迷,mamicode.com
首页 > 其他好文 > 详细

2015/01/23 – 不要对异步回调函数进行同步调用

时间:2015-01-23 17:46:08      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:

  • 绝对不能对异步回调函数(即使在数据已经就绪)进行同步调用。

  • 如果对异步回调函数进行同步调用的话,处理顺序可能会与预期不符,可能带来意料之外的后果。

  • 对异步回调函数进行同步调用,还可能导致栈溢出或异常处理错乱等问题。

  • 如果想在将来某时刻调用异步回调函数的话,可以使用 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==‘);
Promise 实现

js Promise 迷你书

2015/01/23 – 不要对异步回调函数进行同步调用

标签:

原文地址:http://www.cnblogs.com/yoyoone23/p/4244461.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!