js 异步总结
异步编程经历的过程:
1.回调函数
回调函数就是将函数的第二段单独写在一个函数里,并将这个函数传进主函数中,当主函数中任务执行结束后,就执行这个回调函数。
fs.readfile(‘file’ ,function(err, data){
if(err){
console.log();
}
})
2.事件监听
3.发布订阅
4.promise
Promise是异步函数的另一种写法,它将异步函数嵌套的模式改成链式的调用。
promise对象:是一个容器,装载着异步函数进行的状态,并将异步函数的状态传递出来,对象的状态不受外界的影响,任何时候都可以得到这个结果。
var promise = new Promise(function(resolve,reject){
setTimeout(()=>{
console.log(‘hhhhhh’);
},1000)
resolve(‘124’);
})
promise.then(function(data){
console.log(data,'异步成功')
},function(err){
console.log('异步失败');
})
promise.prototype.then()
Then方法的作用是为promise实例添加异步函数状态改变时的回调函数,then方法可以返回一个新的promise实例,即新的异步函数,因此在then后面可以再加一个then函数,用于新的promise实例状态改变时调用。
promise.then(function(){
return new Promise();
}).then(function(){
resolve()
}).catch(function(){
reject()
})
5.async await 异步
async function getData(){
const res = await api.qryCompositeMaterials({ id: ‘03782627’ });
return res;
}
getData().then(function(res){
console.log(res);
})
.catch(function(err){
console.log(err)
})
Async表示函数内部有异步操作,await表示要等到异步操作结束后再执行下面的代码。函数执行的时候,遇到await时就会先返回,等到异步操作结束后,再接着执行函数体内后面的语句。async函数会返回一个promise对象,可以用then函数添加回调函数。