node.js异步编程

这里写自定义目录标题

node.js异步编程

脑图

在这里插入图片描述

案例代码

一、NodeJS最大的特点–事件机制和异步
异步编程有很多特有的代码设计模式,为了实现同样的功能,使用同步方式和异步方式编写代码会有很大差异,新手在刚接触是会很难理解
1、函数返回值
使用一个函数的输出作为另一个函数的输入是常见的需求,在同步方式下一般以下述方式编写代码:

var p1 = fn1(fn2('input'));

在异步方式下,由于函数执行结果不是通过返回值,而是通过回调函数传递,因此一般按以下方式编写代码:

fn2('input', function(demo1) {
    fn1(output2, function(demo2) {
    });
});

异步编程的几种方式
回调函数
最原始的写法,会产生回调地狱,代码易读性差:

let fs = require('fs');

fs.readFile('./a.txt', (err, data) => {
    if(err){
        console.log('readFile.error:', err);
    }else{
        fs.readFile('./b.txt', (err1, data1) => {
            if(err1){
                console.log('readFile.error:', err1);
            }else{
                return data + data1;
            }
        })
    }
})


Promise
我们可以将上述的回调函数方式包装成 Promise 如下:

let readFile = path => {
    return new Promise(function(resolve, reject){
       fs.readFile(path, (err, data) => {
           if(err){
               reject(err);
           }else{
               resolve(data);
           }
       }) 
    });
}
//然后使用 readFile 函数实现如下:
readFile('./a.txt')
    .then(data => readFile('./b.txt').then(data1 => data + data1))
    .catch(err => console.log('readFile.error:', err));


这样既可解决掉这个问题但是.then()也会出现很多 建议大家讲这些分装到一个函数里面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值