异步编程的实现方式

文章类型:Javascript

发布者:admin

发布时间:2023-04-08

JavaScript中的异步机制可以分为以下几种:

一:回调函数 的方式

1:多个回调函数嵌套的时候会造成回调函数地狱,上下两层的回调函数间的代码耦合度太高,不利于代码的可维护

function cs(){
a()
}
function a(){
c()
}

二:Promise 的方式

1:可以将嵌套的回调函数作为链式调用。有时会造成多个 then 的链式调用,可能会造成代码的语义不够明确

 promise1.then(res => {
console.log(res); // 返回值 new promise111111
return '链式调用的方式'
}, reason => {
console.log(reason);
}).then(value => {
console.log(value);
})

三:generator 的方式

1:在函数的执行过程中,将函数的执行权转移出去,在函数外部还可以将执行权转移回来。

{
function* gen() {
yield 'hello'
yield 'world'
return 'ending'
}

let it = gen()

it.next() // {value: "hello", done: false}
it.next() // {value: "world", done: false}
it.next() // {value: "ending", done: true}
it.next() // {value: undefined, done: true}
}

四:async 函数 的方式

1:是 generator 和 promise 实现的一个自动执行的语法糖,它内部自带执行器,当函数内部执行到一个 await 语句的时候,如果语句返回一个 promise 对象,等待 promise 对象的状态变为 resolve 后再继续向下执行。

2:将异步逻辑转化为同步的顺序来书写,并且这个函数可以自动执行。

const asyncRequestData = async function() {
const res1 = await requestData(url1)
const res2 = await requestData(url2)
console.log(res1)
console.log(res2)
}