promise

作用

异步执行的过程中,可以很好地将代码和结果相分离,解决地狱回调多层嵌套的问题,并且更利于代码复用

特征

1.promise是一个构造函数
2.promise有两个构造函数,一个resolvge成功的回调函数和reject失败的回调函数
3.promise原型对象时有个.then()方法第一个参数是resolvge成功的回调函数,第二个参数(可选)是rejected状态的回调函数,catch()方法则表示指定发生错误时的回调函数
4.只要new一个Promise实例就会立刻执行这个异步操作中的代码

function get(path) {
    var promise = new promise(function() {
        false.readFile(path, 'utf-8', (err, data) => {
            if (err) throw err;
            console.log(data)
        });
    });
    // 会直接显示data数据,如果不想显示,用一个函数包裹起来
}
get('./read.txt');
// 包裹起来要实例化才会显示数据

.then方法

function get(path) {
    var promise = new promise(function(resolve, reject) {
        false.readFile(path, 'utf-8', (err, data) => {
            if (err) return reject(err);
            resolve(data);
        });
    });
    return promise;
}

// 用.then方法
var p = get('./read.txt');
p.then(function(data) {
    console.log(data);
}, function(err) {
    console.log(err);
});
读取多个文件

错误示范,嵌套层次太多,结构不清晰

// 错误示范
get('./read.txt')
    .then(function(data) {
        console.log(data);
        get('./read2.txt')
            .then(function(data) {
                console.log(data);
                get('./read3.txt')
                    .then(function(data) {
                        console.log(data);
                    });
            });

    });

正确示范

// 正确示范
get('./read.txt')
    .then(function(data) {
        console.log(data);
        return get('./read2.txt')
    })
    .then(function(data) {
        console.log(data);
        return get('./read3.txt')
    });
 .then(function(data) {
        console.log(data);
    });
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Promise 对象 Promise 的含义 Promise 是异步编程的一种解决方案,比传统的解决方案——回调函...
    neromous阅读 8,813评论 1 56
  • 目录:Promise 的含义基本用法Promise.prototype.then()Promise.prototy...
    BluesCurry阅读 1,544评论 0 8
  • 一、Promise的含义 Promise在JavaScript语言中早有实现,ES6将其写进了语言标准,统一了用法...
    Alex灌汤猫阅读 882评论 0 2
  • JavaScript里通常不建议阻塞主程序,尤其是一些代价比较昂贵的操作,如查找数据库,下载文件等操作,应该用异步...
    张歆琳阅读 2,805评论 0 12
  • 别让孩子成为一只流泪的蜗牛。 上帝给我一个任务,叫我牵一只蜗牛去散步。我不能走太快,蜗牛已经尽力爬,为何每次总是那...
    春平的儿鑫宝阅读 240评论 0 6

友情链接更多精彩内容