标签:遇到 三次 bsp wait UNC style 线程 调用顺序 inf
1 //实现同步操作函数【对time()函数进行实现停顿多长时间n参数传入 实现能够同步执行】 2 console(1); 3 await time(3); 4 console(1);
async function time(n){ return new Promise(function(resolve, reject) { setTimeout(() => { resolve(); }, n); }) }
//方法一 【.then()和.catch()分别代表成功与失败回调】 new Promise(function (resolve, reject) { setTimeout(() => { resolve();//成功执行 //reject(); 失败执行 一般两者用if与else区分 }, n); }) .then(res=>{ //执行成功的回调即上方resolve() }) .catch(err=>{ //执行成功的回调即上方reject() }) //方法二 【在.then中 两参数前为成功回调 后为失败回调】 new Promise(function (resolve, reject) { setTimeout(() => { resolve();//成功执行 //reject(); 失败执行 一般两者用if与else区分 }, n); }) .then(res=>{ //成功回调 },err=>{ //失败回调 })
new Promise(function (resolve, reject) { setTimeout(() => { resolve();//成功执行 }, 1000); }) .then(res=>{ return new Promise(function (resolve, reject) { setTimeout(() => { resolve();//成功执行 }, 1000); }) }) .then(res=>{ return new Promise(function (resolve, reject) { setTimeout(() => { resolve();//成功执行 }, 1000); }) })
【两种方法 Promise.reject()与直接throw等价】
//Promise.resolve()方法 new Promise(function (resolve, reject) { setTimeout(() => { resolve("res1");//成功执行 }, 1000); }).then(res=>{ console.log("第一次回调结果",res) return Promise.resolve(res+" res2") }).then(res=>{ console.log("第二次回调结果",res) return Promise.resolve(res+" res3") }).then(res=>{ console.log("第三次回调结果",res) }) //直接return字串方法 new Promise(function (resolve, reject) { setTimeout(() => { resolve("res1");//成功执行 }, 1000); }).then(res=>{ console.log("第一次回调结果",res) return res+" res2" }).then(res=>{ console.log("第二次回调结果",res) return res+" res3" }).then(res=>{ console.log("第三次回调结果",res) })
执行结果
类似于axios的all方法 【Promise.all([p1, p2])传入数组对象由promise对象组成】
const p1 = new Promise((resolve, reject) => { resolve(‘hello‘); }).then(result => result); const p2 = new Promise((resolve, reject) => { throw new Error(‘报错了‘); }).then(result => result); Promise.all([p1, p2]) .then(result => console.log(result)) .catch(e => console.log(e));
标签:遇到 三次 bsp wait UNC style 线程 调用顺序 inf
原文地址:https://www.cnblogs.com/cc123nice/p/12601416.html