• promise的信任问题&控制反转


                //信任问题
                

    //第三方的某个库 function method(cb){ setTimeout(function(){ cb && cb(); //这个库的bug:函数被多调用了一次 cb && cb(); },1000) }


    //promise一旦被确定为成功或者失败,就不能再被更改 function method(){ return new Promise(resolve =>{ setTimeout(function(){ //成功 resolve(); //上一句已经调用过,下面的调用会失效 resolve(); },1000); }); }





    //控制反转 function method(cb){ setTimeout(function(){ //执行回调但是改变了this指向 cb && cb.call({a:1, b:2}); },1000) }


    function method(cb){ return new Promise(resolve =>{ setTimeout(() =>{ resolve(); //调用的resolve全为自己所书写的流程,很大程度上改善了反转控制的问题 },1000); }); }
    promise信任问题
    1、解决了回调地狱、信任问题;
    2、回调函数不能保证什么时候去调用回调,以及使用什么方式去调用回调;而Promise一旦被确认成功或失败,就不能再被更改。
    传统方法无法保证回调只执行一次,并且不会被第三方的某个库进行添油加醋的操作;而Promise调用且仅调用一次resolve(),不会产生回调多次执行的问题。所以Promise很好地解决了第三方工具导致的回调多次执行(控制反转)的问题,这个问题也称为信任问题。
    Promise成功之后仅调用一次resolve(),不会产生回调多次执行的问题。除非Promise再次调用。
    
    这个就是相对于传统方法的好处,回调函数不能保证什么时候去调用回调,以及使用什么方式去调用回调;而Promise一旦被确认成功或失败,就不能再被更改。
    
    Promise很好地解决了第三方工具导致的回调多次执行(控制反转)的问题,这个问题也称为信任问题。
    
    这些涉及比较底层的东西,可以先了解下,没必要深究。开发时候只需会使用promise就好
  • 相关阅读:
    【求教】
    【刷题】【dp】【贪心】D. Nastya and Scoreboard
    【笔记】STL的七种武器(三)算法
    【刷题】【stl】【字符串】反片语
    【刷题】【字符串】加入数字
    【笔记】【字符串】c++的输入总结
    【刷题】【dfs】【暴力】不如来上分
    【笔记】c语言学习记录
    【笔记】实践中学C语言 100例
    【笔记】STL的七种武器(二)关联容器
  • 原文地址:https://www.cnblogs.com/rickdiculous/p/13270252.html
Copyright © 2020-2023  润新知