美文网首页
比较不同的异步处理方式

比较不同的异步处理方式

作者: nomooo | 来源:发表于2019-12-26 14:47 被阅读0次

例题:

红灯 3s 亮一次,绿灯 1s 亮一次,黄灯 2s 亮一次;如何让三个灯不断交替重复亮灯?

三个亮灯函数已经存在:

            const red = () => {
                console.log('red');
            }
            const green = () => {
                console.log('green');
            }
            const yellow = () => {
                console.log('yellow')
            }

方案一(callback):


            const task = (timer, light, callback) => {
                setTimeout(() => {
                    if(light === 'red'){
                        red()
                    }else if(light === 'green') {
                        green()
                    }else if(light === 'yellow') {
                        yellow()
                    }
                    callback()
                }, timer)
            }
            const step = () => {
                task(3000,'red',() => {
                    task(1000,'green',() => {
                        task(2000,'yellow',step)
                    })
                })
            }
            step()

方案二(promise):

            const task = (timer, light) =>
                new Promise((resolve, reject) => {
                    setTimeout(() => {
                        if (light === 'red') {
                            red()
                        } else if (light === 'green') {
                            green()
                        } else if (light === 'yellow') {
                            yellow()
                        }
                        resolve()
                    }, timer)
                })

            const step = () => {
                task(3000, 'red')
                    .then(() => task(1000, 'green'))
                    .then(() => task(2000, 'yellow'))
                    .then(step)
            }
            step()

方案三(async/await):

    const task = (timer, light) =>
                new Promise((resolve, reject) => {
                    setTimeout(() => {
                        if (light === 'red') {
                            red()
                        } else if (light === 'green') {
                            green()
                        } else if (light === 'yellow') {
                            yellow()
                        }
                        resolve()
                    }, timer)
                })

            const step = async () => {
                await task(3000,'red')
                await task(1000,'green')
                await task(2000,'yellow')
                await step();
            }
            step()

熟悉 Promise 是基础,是理解 async/await 的必要知识,学习 async/await 代表了学习“最先进的生产力”

相关文章

  • 比较不同的异步处理方式

    例题: 红灯 3s 亮一次,绿灯 1s 亮一次,黄灯 2s 亮一次;如何让三个灯不断交替重复亮灯? 三个亮灯函数已...

  • Dart-3的异步模型

    1-Dart的异步模型 1.1 如何处理耗时的操作呢? 针对如何处理耗时的操作,不同的语言有不同的处理方式。 处理...

  • 小程序中异步处理的几种方式对比

    异步处理方式 1.异步处理的几种方式 纯粹的异步回调函数callback promise方法 (async,awa...

  • 前后分离模型之封装 Api 调用

    Ajax 和异步处理 调用 API 访问数据采用的 Ajax 方式,这是一个异步过程,异步过程最基本的处理方式是事...

  • 分布式事务的典型处理方式

    参考来源 分布式事务的典型处理方式:2PC、TCC、异步确保和最大努力型 分布式事务的典型处理方式:2PC、TCC...

  • 方差如何操作与分析?

    在科学试验中常常要探讨不同情况或者不同处理方式对试验结果是否造成影响,通常是比较不同试验下的样本均值的差异。这时,...

  • Flutter从入门到写出完整App Day6

    20.3.13 异步网络请求越来越流行的异步处理方式JS、Dart 单线程+事件循环一个应用程序大部分时间都是处于...

  • 前端几种异步的处理方式

    如果是单个ajax请求,不带有接口钱数据相互依赖的,其实怎么请求都没关系. jQuery,axios,vue-re...

  • async/await和Promise杂谈

    前言 Promise和async/await是当前前端最常见的异步程序处理方式,async/await是基于Pro...

  • Promise整理

    在开发过程中,我们经常需要处理异步的情况,开发人员对异步的处理方式也从轮询到回调,再到现在的Promise。于是,...

网友评论

      本文标题:比较不同的异步处理方式

      本文链接:https://www.haomeiwen.com/subject/tmnkoctx.html