Js异步编程

JavaScript (JS) 是一种单线程执行的编程语言,因此在处理复杂或耗时的任务时,如果采用同步编程方式,则会让浏览器或服务器阻塞,导致用户体验变差或性能下降。

异步编程可以解决这个问题。它使得可以同时处理多个任务,不需要等待某些操作完成再执行下一个操作,而是立即将控制权返回给调用者。当相应的操作完成时,异步函数会调用回调函数或Promise对象的then()方法,并在事件队列中排队等待执行,从而实现非阻塞式的并发执行。

以下是两种异步编程实现的方式:

一.Promise.all 实现

methodExec() {
    // 1.定义一个Array存储调用方法后的数据
    const promiseArray = []
    // 2.将要异步执行的两个方法添加到Array中
    promiseArray.push(
    	fun1(),
	    fun2()
    )
    // 3.使用 Promise.all() + .then() 等待方法返回结果都返回,然后获取异步调用的方法的信息
    Promise.all(promiseArray).then((result) => {
        console.log(result[0])
        console.log(result[1])
    })
}
async methodExec() {
    // await等待Promise.all()返回全部数据,方法和效果跟上面一模一样
    let [fun1Data,fun2Data] = await Promise.all([fun1(),fun2()]);
}

二.async/await 实现

// async 是一个关键字,定义异步函数
async methodExec() {
    // 定义变量接收方法fun1()和fun2()的返回值,此时fun1()的执行不阻塞fun2()
    let fun1Promise = fun1()
    let fun2Promise = fun2()
    // await 是一个关键字,可以等到fun1Promise和fun2Promise接受到返回值后才赋值到fun1Data和fun2Data
    let fun1Data = await fun1Promise;
    let fun2Data = await fun2Promise;
}

你可能感兴趣的:(js,javascript,前端,开发语言)