js 异步

////// 异步函数

  • ////回调,作为参数传递给另一个函数的函数(用函数作参数)
function myDisplayer(some) {
    document.getElementById("demo").innerHTML = some;
}
function myCalculator(num1, num2, myCallback) {
    let sum = num1 + num2;
    myCallback(sum);
}
myCalculator(5, 5, myDisplayer);

  • //// Promise  ,resolve 和 reject 的名字可以用其他的名字,比如 myResolve
let pro = new Promise(function (resolve, reject) {
    resolve(value); // 成功时
    reject(error);  // 出错时
});
pro.then(
    function (value) { /* 成功时的代码 */ },
    function (error) { /* 出错时的代码 */ }
);
// 多个promise合并处理
Promise.all([getList1(), getList2()]).then(value => {
    //第一个请求的数据
    const x = value[0];
    //第二个请求的数据
    const y = value[1];
    //合并操作
    for (const i of x) {
        for (const k of y) {
            //Todo
        }
    }
})

  • //// Async 使函数返回promise
async function myFunction() {
    return "Hello";
}
等同于
async function myFunction() {
    return Promise.resolve("Hello");
}
myFunction().then(
    function (val) { console.log(val) }
);
// Await 语法 , 函数前关键字 await 使函数等待 promise, 只能在 async 函数中使用
let value = await promise;
// promise返回的参数是 resolve 的参数
async function myDisplay() {
    let myPromise = new Promise(function (myResolve, myReject) {
        myResolve("I love You !!");
    });
    document.getElementById("demo").innerHTML = await myPromise;
}
myDisplay();


posted @ 2022-07-09 10:12  jqynr  阅读(36)  评论(0)    收藏  举报