javascript 使用async ajax调用在JS中进行轮询,该调用返回一个promise(修改自:https://davidwalsh.name/javascript-polling)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 使用async ajax调用在JS中进行轮询,该调用返回一个promise(修改自:https://davidwalsh.name/javascript-polling)相关的知识,希望对你有一定的参考价值。

// The polling function
function poll(fn, timeout, interval) {
    var endTime = Number(new Date()) + (timeout || 2000);
    interval = interval || 100;

    var checkCondition = function(resolve, reject) { 
        var ajax = fn();
        // dive into the ajax promise
        ajax.then( function(response){
            // If the condition is met, we're done!
            if(response.data.var == true) {
                resolve(response.data.var);
            }
            // If the condition isn't met but the timeout hasn't elapsed, go again
            else if (Number(new Date()) < endTime) {
                setTimeout(checkCondition, interval, resolve, reject);
            }
            // Didn't match and too much time, reject!
            else {
                reject(new Error('timed out for ' + fn + ': ' + arguments));
            }
        });
    };

    return new Promise(checkCondition);
}

// Usage: get something via ajax
poll(function() {
	return axios.get('something.json');
}, 2000, 150).then(function() {
    // Polling done, now do something else!
}).catch(function() {
    // Polling timed out, handle the error!
});

以上是关于javascript 使用async ajax调用在JS中进行轮询,该调用返回一个promise(修改自:https://davidwalsh.name/javascript-polling)的主要内容,如果未能解决你的问题,请参考以下文章

AJAX

使用 Jquery 的同步“Ajax”调用似乎不起作用

jquery ajax php 调用方法!

ajax同步请求与异步请求的区别

Ajax嵌套调用 (jquery) $.ajaxSettings.async = false;

在 Javascript 中的 API 调用之间使用 ASYNC/AWAIT 中的数组方法