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();