async 函数的实现

async 函数的实现,就是将 Generator 函数和自动执行器,包装在一个函数里

function getCallSettings() { return utils.ajax({ url: '/dialer/dialerSetting', method: "GET", }); } async function dealData() { try { let settingInfo = await getCallSettings(); // await会暂停在这,直到promise决议(请求返回) // do something…… } catch(err) { console.log(err); } } dealData();



function getCallSettings() {
    // utils.ajax方法支持返回promise对象,把得到的promise return出去
    return utils.ajax({
        url: '/dialer/dialerSetting',
        method: "GET",
    });
}
function *dealData() {
    try {
        let settingInfo = yield getCallSettings();
        // do something……
    }
    catch(err) {
        console.log(err); // 接收错误
    }
}

let it = dealData();
let promise = it.next().value; // 注意,这里拿到yield出来的promise
promise.then(
    (info) => {
        it.next(info); // 拿到info传给yield表达式
    }, 
    (err) => {
        it.throw(err); // 抛出错误
    }
);
posted @ 2021-10-16 13:56  果果1024  阅读(87)  评论(0)    收藏  举报