首页 > 其他 > 详细

异步函数

时间:2021-03-18 10:03:46      阅读:31      评论:0      收藏:0      [点我收藏+]

一 回调地狱

//需求:我们需要一次读取 1.txt 2.txt 3.txt 文件
var fs = require(fs);
fs.readFile(./1.txt,utf8,function (err,result) {
    //文件读取完成后会执行回调函数
    console.log(result);
    fs.readFile(./2.txt,utf8,function (err,result) {
        console.log(result);
        fs.readFile(./3.txt,utf8,function (err,result) {
            console.log(result);
        })
    });
});//回调嵌套层级太多  产生了回调地狱

二 Promise

1)概念

// promise  [?prɑ?m?s]  许诺 承诺 的意思

// promise 的出现的目的 就是解决Node.js异步编程中回调地狱的问题

// Promise 是一个构造函数

// Promise 只是做了语法上的改进 没有任何新功能

2)基本语法

var fs = require(fs);
var  promise = new Promise(function (resolve, reject) {
    fs.readFile(./100.txt,utf8,function (err,result) {
        if (err != null) {
            reject(err);
        } else {
            resolve(result);
        }
    });
});
//resolve 就是 then方法里面的 回调函数
//reject  就是 catch方法里面的 回调函数

promise.then(function (result) {
    console.log(result);
}).catch(function (err) {
    console.log(err);
});

 

3)解决回调地狱

var fs = require(fs);
function p1() {
    return new Promise(function (resolve, reject) {
        fs.readFile(./1.txt,utf8,function (err,result) {
            resolve(result);
        })
    });
}
function p2() {
    return new Promise(function (resolve, reject) {
        fs.readFile(./2.txt,utf8,function (err,result) {
            resolve(result);
        })
    });
}
function p3() {
    return new Promise(function (resolve, reject) {
        fs.readFile(./3.txt,utf8,function (err,result) {
            resolve(result);
        })
    });
}
p1().then(function (r1) {
    console.log(r1);
    return p2();
}).then(function (r2) {
    console.log(r2);
    return p3();
}).then(function (r3) {
    console.log(r3);
});
//链式调用

 

三 异步函数

 1)概念

//1 异步函数 是异步编程语法的终极解决方案

//2 可以让我们将异步代码写成同步的形式 让代码不再有回调嵌套 使的代码清晰明了

 2)语法

 

// async  异步的意思

//在普通函数前面 加上async 就成了 异步函数

 

 技术分享图片

 

 技术分享图片

 

异步函数

原文:https://www.cnblogs.com/fuyunlin/p/14553208.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!