美文网首页
node 异步编程

node 异步编程

作者: 努力学习的小丸子 | 来源:发表于2021-03-24 10:54 被阅读0次

回调函数方式
缺点:回调地狱、异步并发控制困难

 function interview(cb){
     setTimeout(()=>{
        if(Math.random()<0.6){
            cb(null);
        }else{
            cb(-1)
        }
     },10)
 }
 let count = 0;
 process.stdin.on('data',e=>{
     //面试一家公司
    interview(function(res){
        if(res){
            console.log('fail-one-1')
            return 
        }
        count++;
        if(count===2){
            console.log('两家公司都通过了')
            count = 0
        }
        interview(function(res){
            if(res){
                console.log('fail-one-2')
                return 
            }
            interview(function(res){
                if(res){
                    console.log('fail-one-3')
                    return 
                }
                console.log('smile-one')
            })
        })
        })
        //面试第二家公司
        interview(function(res){
            if(res){
                console.log('fail-two-1')
                return
            }
            count++;
        if(count===2){
            console.log('两家公司都通过了')
            count = 0
        }
        })
 })

Promise

function interviewPromise(name){
     return new Promise((resolve,reject)=>{
        setTimeout(()=>{
            if(Math.random()<0.6){
                resolve(name+',success')
            }else{
                reject(name+',fail')
            }
         },500)
     })
 }

 process.stdin.on('data',e=>{
     //解决回调地狱
    interviewPromise().then(res=>{
        console.log(111,res)
        interviewPromise().then(res=>{
            console.log(222,res)
            interviewPromise().then(res=>{
                console.log(333,res)
            }).catch(err=>{
                console.log('3 fail')
            })
        }).catch(err=>{
            console.log('2 fail')
        })
    }).catch(err=>{
        console.log('1 fail')
    });
    //解决异步并发
    Promise.all([interviewPromise('a'),interviewPromise('b')]).then(
        results=>{
            console.log(results)
        }
    ).catch(err=>{
        console.log(err);
    })
 })

Async / Await

相关文章

  • ebookcoin中出现的异步编程浅析

    前言 node的核心编程思想是异步编程,ebookcoin是基于node开发的,ebookcoin的异步编程是基于...

  • 深入浅出Node.js学习笔记(三)

    异步I/O 在众多高级编程语言或运行平台中,Node是首个将异步作为主要编程方式和设计理念。 Node的基调:异步...

  • 01node.js

    01、模块 02、关注学习 03、Node.js 回调函数Node.js 异步编程的直接体现就是回调。异步编程依托...

  • 04-Node 异步编程

    Node 异步编程同步方法和异步方法异步 API 的执行顺序异步编程回调地狱问题Promise 改造回调地狱代码a...

  • Node异步编程

    Node异步编程 目前的异步编程主要解决方案有: 事件发布/订阅模式 Promise/Deferred模式 流程控...

  • node 异步编程

    高阶函数:把函数参数作为参数,或作为返回值 偏函数: 将传入参数作为判断或者其他逻辑条件 注意点 异常处理 异步I...

  • node 异步编程

    回调函数方式缺点:回调地狱、异步并发控制困难 Promise Async / Await

  • Node学习(3)--异步编程

    Node.js 回调函数 Node.js 异步编程的直接体现就是回调。 异步编程依托于回调来实现,但不能说使用了回...

  • node.js(六)

    Node.js 回调函数Node.js 异步编程的直接体现就是回调。异步编程依托于回调来实现,但不能说使用了回调后...

  • 你真的懂异步编程吗?

    为什么要学习异步编程? 在JS 代码中,异步无处不在,Ajax通信,Node中的文件读写等等等,只有搞清楚异步编程...

网友评论

      本文标题:node 异步编程

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