zoukankan      html  css  js  c++  java
  • 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就好
  • 相关阅读:
    HDU 3555 Bomb (数位DP)
    ms sqlserver数据库主文件特别大怎么办
    w3wp.exe占用cpu特别高
    Excel的数据批量替换
    用Excel的分列功能格式化时间
    sql cte的使用
    数据结构
    http与浏览器学习
    长方形裁切优化与矩形物料排料
    架构知识
  • 原文地址:https://www.cnblogs.com/rickdiculous/p/13270252.html
Copyright © 2011-2022 走看看