js同步异步的常用方法

<!--ES5:通过回调函数来处理异步执行的结果-->
function fn(callback){
     setTimeout(()=>{
         var call = "hello world";
		 callback(call);
    }, 1000);
}
fn(function(call){
	console.log(call); //hello world
});

<!--ES6新特性:Promise-->  
<!--promise 用同步的写法执行异步代码-->
<!--Promise 优化了回调函数的用法,让原本需要纵向一层一层嵌套的回调函数实现了横向的调用,也就是链式调用-->  
<!--Promise是同步的,它里面执行到异步任务以前都是同步执行的。当执行的异步任务的时候,就被挂起了,然后继续执行主线程Promise后面的代码。当异步任务有结果返回的时候,Promise的状态就改变啦!-->
<!--Promise 构造函数接受一个函数作为参数,函数里面有两个参数 resolve 和 reject ,其中 resolve 作为执行成功的函数, reject 作为执行失败的函数-->
function fn(resolve,reject){
     setTimeout(()=>{
         var call = "hello world";
		 resolve(call);
    }, 1000);
}
let p = new Promise(fn);
p.then(function(res){
	console.log(res); //hello world
})

<!--ES7新特性:asyncawait-->
/*
*1. async 将普通方法转为 异步并且返回 promise对象
*2. await 将异步代码转为同步结果,等着异步代码执行完才执行后面的代码
*/  
<!--async 将普通方法转为 异步并且返回 promise对象-->
async function test(){
	return 'goods';
}
console.log(test());//Promise {<resolved>: "goods"}
let p = test();
p.then(function(res){
	console.log(res); //goods
})

<!--await 必须在异步函数中使用-->
async function test(){
	return 'goods';
}
//await 必须在异步函数中使用
async function fn(){
	let data = await test(); 
	console.log(data); //goods
}
fn();

//例  
async function fn1(){  
	return  '成功';
}
async function fn2(){
	console.log(1111);
	let  p = fn1();
	p.then(function(res){
		console.log(res);
	});
	console.log(3333);
}
fn2();
/**
输出:
	1111
	3333
	成功
*/

async function fn1(){  
	return  '成功';
}
async function fn2(){
	console.log(1111);
	// await 将异步代码转为同步结果,等着异步代码执行完才执行后面的代码
	let data = await fn1();  
	console.log(data);
	console.log(3333);
}
fn2();
/**
输出:
	1111
	成功
	3333
*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值