async 函數


同步
console.log(1);
console.log(2);
console.log(3);
console.log(4);

		//異步 ajax 文件讀取io操作
		console.log(1);
		console.log(2);
		setTimeout(function(){
			console.log(3000);
		},3000);
		console.log(3);
		console.log(4);
		//先打印1 2 3 4,隔三秒后打印3000;
		
		//async函數返回的是resolve狀態的Promise對象
		async function fn(){
			return "abc";
		}
		let result=fn();
		console.log(result);//打印:Promise {[[PromiseStatus]]: "resolved", [[PromiseValue]]: "abc"}。*/

Promise 對象

		let p = new Promise(function(resolve,reject){
			resolve("abc");
		});
		
		p.then(function(data){
			console.log(data);//打印abc。
		});
		//async函數里面的返回值傳遞給then方法
		async function fn(){
			return "123";
		}
		let p1 = fn();
		p1.then(function(data){
			console.log(data);//打印123.
		});
		
		//async函數用來處理異步
		
		function one(){
			return new Promise(function(resolve,reject){
				setTimeout(function(){
				console.log("one_3000");
				resolve("one_3000");
				},3000);
			})
			
		}

		function two(){
			return new Promise(function(resolve,reject){
				setTimeout(function(){
				console.log("two_2000");
				resolve("two_2000");
				},2000);
			})
			
		}
		
		//await只能出現在異步函數里面, 
		async function shunxu(){
			console.log("start");
			let r1 = await one();
			console.log(r1);
			let r2 = await two();
			console.log(r2);
			return "end";
		}
		let p3 = shunxu();
		p3.then(r=>{
			console.log("結束");
		});
		
		//先打印start,三秒后打印兩次one_3000,打印完one_3000然后隔兩秒打印兩次two_2000和結束;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM