那么在js中有如下几种异步方式:
示例1
var async=function(callback){
//read data
setTimeout(function(){
callback('data')
},1000)//1秒后回调
}
//使用
async(function(data){
alert(data)
})
示例2
var async=function(callback){
var xhr=new XMLHttpRequest()
xhr.open('get','.',true)
xhr.onreadystatechange=function(){
callback(xhr.readyStatus)
}
xhr.send()
}
async(function(data){
alert(data)
})
示例3
var async=function(callback){
var img=new Image()
img.onload=img.onerror=function(){
callback(img)
}
img.src='x.jpg'
}
async(function(data){
alert(data)
})
文章来自 https://www.cnblogs.com/rogerwu/p/10784236.html
async 函数返回一个 Promise 实例对象,可以使用 then 方法添加回调函数。
当函数执行时,一旦遇到 await 就会先返回,等到异步操作完成,再接着执行函数体内后面的语句
(1)、async 函数内部 return语句返回的值,会成为then方法回调函数的参数
(2)、async 函数内部抛出错误,会导致返回的 Promise对象变成reject状态,抛出的错误会被catch方法回调函数接收到
(3)、只有 async 函数内部的异步操作执行完,才会执行 then方法指定的回调函数
实际应用