JavaScript始终是同步的并且是单线程的
js是单线程的,按照从上往下顺序执行代码,当遇到异步程序时,会将异步代码抽出来放入事件队列中,先执行完后面的所有同步代码,最后再去执行事件队列里面的,所以导致执行结果并不是顺序的
解决方案:用Js异步实现(async/await)
function promiseBtn(value) {
return new Promise((resolve, reject) => {
if (value) {
resolve(value)
} else {
reject("服务器错误!")
}
})
}
默认调用(程序是同步执行的,结果不是顺序返回)
list(() => {
console.log("****同步*****")
promiseBtn().then((res) => {
console.log("同步"+res)
}).catch((err) => {
console.log("同步"+err)
})
promiseBtn("测试通过").then((res) => {
console.log("同步"+res)
}).catch((err) => {
console.log("同步"+err)
})
})
list();
异步执行
async list(() => {
console.log("****异步*****")
await promiseBtn().then((res) => {
console.log("异步"+res)
}).catch((err) => {
console.log("异步"+err)
})
await promiseBtn("测试通过").then((res) => {
console.log("异步"+res)
}).catch((err) => {
console.log("异步"+err)
})
})
list();