zoukankan      html  css  js  c++  java
  • 回调与Promise

    Promise 对象就是用于表示一个异步操作的最终状态(成功或失败)。它的流程就是在什么状态下需要执行什么样的操作。
    
    resolve简单理解就是一步操作执行成功后的回调函数
    
    then是Promise对象上的一个方法,它最多需要有两个参数:表示异步操作执行后的回调函数(其实就是resolve和reject回调函数)。


    //传统的回调方法 用于请求数据(模拟)
    function f(cb){
    setTimeout(function(){
    // 如果不这样写,调用f函数时,没有传递参数,执行cb()这句代码会报错,到执行项目无法执行下去。
    //
    // cb && cb()这种写法, 是为了保证传入cb之后,才执行cb(),如果没有传入cb, 就不会执行cb(),防止报错。
    cb && cb(); //如果cb存在(存在的话必须是函数,否则会报错)就去调用cb方法
    },1000);
    }

    //回调地狱
    // f(function(){
    // console.log(1);
    // f(function(){
    // console.log(2);
    // f(function(){
    // console.log(3);
    // f(function(){
    // console.log(4);
    // f(function(){
    // console.log(5);
    // f(function(){
    // console.log(6);
    // })
    // })
    // })
    // })
    // })
    // })










    //方法 用于请求数据(模拟) function f(){ return new Promise(resolve => { //Promise对象接收的这个形参resolve代表成功时候要做的事 setTimeout(function(){ resolve(); //1s后调用resolve函数。就是下面的匿名函数,可以在想去调用resolve()的时候去调用就可以了 },1000); }) } //.then方法是每个promise实例都具有的, f() //调用函数f,返回一个新的promise对象 .then(function(){ //.then后面的匿名函数就是上面的形参resolve console.log(1); return f(); //必须调用f(),才可以返回一个promise实例,下面才可以调用.then方法 }) .then(function(){ console.log(2); return f(); }) .then(function(){ console.log(3); return f(); })
    Promise自带两个参数函数,resolve和reject。语法:
    
    new Promise( function(resolve, reject) {...} /* executor */ );
    Promise构造函数执行时立即调用executor 函数,也就是function。 resolve 和 reject 两个函数作为参数传递给executor(executor 函数在Promise构造函数返回所建promise实例对象前被调用)。promise的状态有两种,成功时调用resolve函数,失败时调用reject 函数。
     
     
     
    ES6用法小结:https://blog.csdn.net/qq_34645412/article/details/81170576
    什么是Promise
    
    Promise 是异步编程的一种解决方案,其实是一个构造函数,自己身上有all、reject、resolve这几个方法,原型上有then、catch等方法。
    
    Promise对象有以下两个特点。
    
    (1)对象的状态不受外界影响。Promise对象代表一个异步操作,有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)。只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。这也是Promise这个名字的由来,它的英语意思就是“承诺”,表示其他手段无法改变。
    
    2)一旦状态改变,就不会再变,任何时候都可以得到这个结果。Promise对象的状态改变,只有两种可能:从pending变为fulfilled和从pending变为rejected。只要这两种情况发生,状态就凝固了,不会再变了,会一直保持这个结果,这时就称为 resolved(已定型)。如果改变已经发生了,你再对Promise对象添加回调函数,也会立即得到这个结果。这与事件(Event)完全不同,事件的特点是,如果你错过了它,再去监听,是得不到结果的。
    回调与Promise
    function f(cb){
    cb&&cb( )----------表示如果cb存在,就去调用cb ( )
    }
    1、new Promise(回到函数)
     .then(函数)方法是每个new Promise都有这个方法;
    2、then方法指定的回调函数,将在当前脚本所有同步任务执行完才会执行
    resolve对应 .then(函数)方法中的函数;
    只有return了f()中的new Promise(回到函数) ,才能调用.then方法;
    then( )方法都在同一层,便于修改;
  • 相关阅读:
    Android NDK pthreads详细使用
    Android 音视频深入 十七 FFmpeg 获取RTMP流保存为flv (附源码下载)
    Android事件分发机制
    Gradle之FTP文件下载
    JVM内存回收机制
    Git如何把本地代码推送到远程仓库
    Android 进程间通讯方式
    微信小程序之文件系统初探
    时间选择器组件之关于table走过的弯路
    腾讯地图JavaScript API GL实现文本标记的碰撞避让
  • 原文地址:https://www.cnblogs.com/rickdiculous/p/13237147.html
Copyright © 2011-2022 走看看