(function(){ /* async function timeout(){ return "hello async"; } timeout().then(result => { console.log(result); }) //console.log(timeout()); async function asyncFn() { return "我后执行"; }; asyncFn().then(result => { console.log(result); }) console.log("先执行"); //async会被定义为异步函数,不会影响后面正常的执行。 async function test() { throw new Error("it's error"); }; test().then(success => console.log('成功了',success)) .catch(error => console.log("失败了",error)); async function throwStatus() { return "show all"; }; throwStatus().then(success => console.log("成功",success)) .catch(error => console.log("失败",error)); async function fn() { '这个值接受不到'; }; fn().then(success => console.log("成功",success)) .catch(error => console.log("失败",error)); //成功,undefined async function fn2() { return "这个值可以接收"; } fn2().then(success => console.log("成功",success)) .catch(error => console.log("失败",error)); async function awaitReturn() { return await 1; }; awaitReturn().then(success => {console.log("成功",success)}) .catch(error => {console.lot("失败",error)}); //成功 1 const timeoutFn = function(timeout){ return new Promise(resolve => { return setTimeout(resolve,timeout); }) } async function fn3() { await timeoutFn(1000); await timeoutFn(2000); return "完成"; } fn3().then(success => console.log(success)); */ function testSometing() { console.log("testSomething"); //2 return "return testSomething"; } async function testAsync() { console.log("testAsync"); //6 return Promise.resolve("hello async"); } async function test() { console.log("test start..."); //1 const testFn1 = await testSometing(); console.log(testFn1); //5 const testFn2 = await testAsync(); console.log(testFn2); //8 console.log('test end...'); //9 } test(); var promiseFn = new Promise((resolve)=> { console.log("promise START..."); //3 resolve("promise RESOLVE"); //7 }); promiseFn.then((val)=> console.log(val)); console.log("===END===") //4 async function testSometing() { console.log("testSomething"); //2 return "return testSomething"; } async function testAsync() { console.log("testAsync"); //7 return Promise.resolve("hello async"); } async function test() { console.log("test start..."); //1 const testFn1 = await testSometing(); //跳过线程 console.log(testFn1); //6 const testFn2 = await testAsync(); console.log(testFn2); //8 console.log('test end...'); //9 } test(); var promiseFn = new Promise((resolve)=> { console.log("promise START..."); //3 resolve("promise RESOLVE"); //5 }); promiseFn.then((val)=> console.log(val)); console.log("===END===") //4 //await 会让出线程,先执行下面的方法 //Promise执行resolve();会放入Promise队列 /* async await 的特点 1.是一种编写异步代码的新方法。之前异步代码的方案是callback和promise。 2.建立在 promise 的基础上,与promise一样也是非阻塞的。 3.async/await 让异步代码看起来、表现起来更像同步代码。这正是其威力所在。 */ })();
来源:51CTO
作者:墨咎
链接:https://blog.csdn.net/mo_jiu/article/details/100152210