问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

前端的Promise是干啥的?

发布网友 发布时间:2022-04-25 19:05

我来回答

3个回答

懂视网 时间:2022-04-20 12:15

Promise概述

Promise对象是CommonJS工作组提出的一种规范,目的是为异步操作提供统一接口。

那么,什么是Promises?

首先,它是一个对象,也就是说与其他JavaScript对象的用法,没有什么两样;其次,它起到代理作用(proxy),充当异步操作与回调函数之间的中介。它使得异步操作具备同步操作的接口,使得程序具备正常的同步运行的流程,回调函数不必再一层层嵌套。

简单说,它的思想是,每一个异步任务立刻返回一个Promise对象,由于是立刻返回,所以可以采用同步操作的流程。这个Promises对象有一个then方法,允许指定回调函数,在异步任务完成后调用。

比如,异步操作f1返回一个Promise对象,它的回调函数f2写法如下。

(new Promise(f1)).then(f2);

前言

Promise是JavaScript异步操作解决方案,最近看到项目里不少人用了Promise 的库类,比如 bluebird、q 、jQuery.Deffered 等 polyfill promise 方式,使用的时候翻看长长的文档,真心累觉不爱。

es5 发展到现在,node 在0.12版本就已经支持了promise, 在客户端,大部分浏览器也支持了Promise, 如果要兼容低版本的浏览器,可以加上es5-shim等 polyfill promise。下面话不多说,来一起看看详细的介绍:

用法

Promise 常用场景。

  • 处理异步回调

  • 多个异步函数同步处理

  • 异步依赖异步回调

  • 封装统一的入口办法或者错误处理

  • 一、处理异步回调

    Promise 的基本用法, 处理异步回调。

    二、多个异步函数同步处理

    有时候我们需要发送两个ajax,希望他们能一起把数据返回,就可以采用下面的办法。


    三、异步依赖异步回调

    有些场景是一个异步依赖另一个异步的返回值的,就可以采用下面的用法。

    比如: 用一个订单号异步取到订单详情,再用订单详情里的商品Id获取到商品详情。

    四、封装统一的入口办法或者错误处理

    错误处理


                                            

    热心网友 时间:2022-04-20 09:23

    Promise是异步编程的一种解决方案,可以替代传统的解决方案--回调函数和事件。ES6统一了用法,并原生提供了Promise对象。作为对象,Promise有以下两个特点:

    (1)对象的状态不受外界影响。

    (2)一旦状态改变了就不会在变,也就是说任何时候Promise都只有一种状态。

    可以通过Promise的构造函数创建Promise对象。

    var promise = new Promise(function(resolve,reject)setTimeout(function(){                              
      console.log("hello world");},2000);
    });

    Promise构造函数接收一个函数作为参数,该函数的两个参数是resolve,reject,它们由JavaScript引擎提供。其中resolve函数的作用是当Promise对象转移到成功,调用resolve并将操作结果作为其参数传递出去;reject函数的作用是单Promise对象的状态变为失败时,将操作报出的错误作为其参数传递出去。如下面的代码:

       function greet(){    var promise = new Promise(function(resolve,reject){        var greet = "hello  world";
            resolve(greet);
        });    return promise;
        }
        greet().then(v=>{    console.log(v);//*
        })

    上面的*行的输出结果就是greet的值,也就是resolve()传递出来的参数。

    注意:创建一个Promise对象会立即执行里面的代码,所以为了更好的控制代码的运行时刻,可以将其包含在一个函数中,并将这个Promise作为函数的返回值。

    Promise的then方法

      promise的then方法带有以下三个参数:成功回调,失败回调,前进回调,一般情况下只需要实现第一个,后面是可选的。Promise中最为重要的是状态,通过then的状态传递可以实现回调函数链式操作的实现。先执行以下代码:

    function greet(){var promise = new Promise(function(resolve,reject){    var greet = "hello  world";
        resolve(greet);
    });return promise;
    }var p = greet().then(v=>{console.log(v);
    })console.log(p);

    热心网友 时间:2022-04-20 10:41

    转异步为同步的作用
    123
    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    怎样喷香水留香更持久?有哪些技巧? 有哪些方法让香水持久度更长一些? 怎样喷香水比较持久? 如何喷香水能使味道更持久? 败北是什么梗 湖南第一师范学院生活开销 赣州博沃新能源科技有限公司怎么样? 在湖南第一师范学院读书需要支出哪些费用 江西信丰恒隆麦饭石酒业有限公司公司荣誉 信丰县资源特点 怎样让桌面的鼠标变色 es6 promise怎么模拟实现jsonp 如何使用promise获取异步方法的结果? ES6中的Promise.resolve到底有何作用 es6开发的是时候,promise的作用? 人总是还不起债务怎么办? 债务还不起要被判刑么 破产后债务还不上怎么办 司法债务还不出来怎么办 如何处理欠款还不起如何应对债务人欠款不还 民法典个人还不起债务要怎样办 欠债还不起会有什么后果? 债务还不了抵押物如何处理 法院起诉债务还不上怎么办 民法典中债务还不了如何处理 当债务还不清怎么办 一直还不起债务怎么办 债务还不上怎么办? 对方债务还不起怎么办 债务不还怎么办 通过ES6 Promise 和 jQuery Deferred 的异同学习 Promise es6-promise js怎么引用 最近在找前端工作,然后面试的时候人家问我。promise为啥能解决地狱回调... angularjs的¥q的用法 angular 怎么把promise对象改为同步的 求助:鼠标指针变了颜色,还一卡一卡的 前端开发中有什么经典的轮子值得自己去实现一遍 安卓手机上什么万能播放器最靠谱(不要暴风) 秘密邻居手机和电脑能一起玩吗 秘密邻居游戏配置要求高吗 秘密邻居游戏配置要求一览 求android 万能视频播放器 电脑版秘密邻居显示网络连接失败 安卓手机万能视频播放器 电脑秘密邻居下载哪个版本好?有好几个版本吗? 请问怎么下载秘密邻居电脑免费版? 万能播放器的安卓版 哪个软件可以下载秘密邻居? 安卓万能播放器 秘密邻居能在任天堂上玩的操作方法 秘密邻居在哪里 下载电脑版谢谢