await,async的学习(转载)

211 阅读1分钟

链接学习:https://www.cnblogs.com/CandyManPing/p/9384104.html

链接学习:https://www.cnblogs.com/SamWeb/p/8417940.html

	/*
					/*
	//1,async异步函数 异步函数也就意味着该函数的执行不会阻塞后面代码的执行。 写一个async 函数
	async function gettimeout() {
	  return 'hello world';
	}
	gettimeout().then(function(res){
		console.log(res)
	})
	console.log('虽然在后面,但是我先执行');
	
	//2,async异步函数 异步函数也就意味着该函数的执行不会阻塞后面代码的执行。 写一个async 函数
	async function timeout(flag) {
	    if (flag) {
	        return 'hello world'
	    } else {
	        throw 'my god, failure'
	    }
	}
	timeout(true).then(function(res){
		console.log(res)
	})
	timeout(false).catch(err => {
	    console.log(err)
	})
	*/
	//await是等待的意思,那么它等待什么呢,它后面跟着什么呢?其实它后面可以放任何表达式,不过我们更多的是放一个返回promise 对象的表达式。
	//注意await 关键字只能放到async 函数里面
	function doubleAfter2seconds(num) {
	    return new Promise((resolve, reject) => {
	        setTimeout(() => {
	        	console.log("这是先执行的函数")
	            resolve(2 * num)
	        }, 1000);
	    } )
	}
	async function testResult() {
	    let first = await doubleAfter2seconds(30);
	    let second = await doubleAfter2seconds(50);
	    let third = await doubleAfter2seconds(30);
	    console.log(first)
	    console.log(first + second + third);
	}
	testResult();
	//await是等待的意思,单独练习
	function say() {
        return new Promise(function(resolve, reject) {
            setTimeout(function() {
                let age = 26
                resolve(`hello, joel。今年我 ${age} 岁`);
            }, 1000);
        });
    }
    async function demo() {
        const v = await say(); // 输出:hello, joel。今年我 26 岁  等待这个say 的异步,如果成功把回调 resole 函数的参数作为结果
        console.log(v);
    }
    demo();