资讯专栏INFORMATION COLUMN

认识并使用Promise

gitmilk / 2544人阅读

摘要:是一个异步操作返回的对象,用来传递异步操作的消息。可以解决的问题解决了回调地狱问题,不会导致难以维护合并多个异步请求,节约时间。使用用来指定对象的状态改变时要执行的操作成功失败接收一个数组,数组内是实例,必须都成功呢才表示成功。

Promise 是一个异步操作返回的对象,用来传递异步操作的消息。 可以解决的问题:

解决了回调地狱问题,不会导致难以维护;

合并多个异步请求,节约时间。

Promise 有三种状态:

Pending Promise 对象实例创建时的初始态;

Fulfilled 成功时的状态;

Rejected 失败时的状态。

使用 Promise: Promise.then():用来指定 Promise 对象的状态改变时要执行的操作
let promise = new Promise(function (resolve, reject) {
    resolve("成功");
    //reject("失败");
})

promise.then(function (data) {
    console.log("data: ", data);
},function (err) {
    console.log("err: ", err);
})
Promise.all():接收一个数组,数组内是 Promise 实例,必须都成功呢才表示成功。 Promise.race():接收一个数组,数组内是 Promise 实例,最早返回的对象成功了,就变为成功态,如县失败了,就改变状态为失败态。
let fs = require("fs");
function read(url){
    return new Promise(function(resolve, reject){
        fs.readFile(url,"utf8",function(err, data){
            if(err) reject( err);
            resolve( data);
        })
    })
}

Promise.all([read("1.txt"), read("2.txt")]).then(function (data) {
    console.log(data);
},function (err) {
    console.log("err: ", err);
})

Promise.race([read("1.txt"), read("2.txt")]).then(function (data) {
    console.log(data);
},function (err) {
    console.log("err: ", err);
})
Promise.resolve():返回一个 Promise 实例,这个 Promise 实例处于 resolve 状态。
Promise.resolve([1,2,3]).then(function(data){
    console.log(data);
});
输出:[ 1, 2, 3 ]
Promise.reject():返回一个 Promise 实例,这个 Promise 实例处于 reject 状态。
Promise.reject([1,2,3]).then(null,function(err){
    console.log("err",err)
});
输出:err [ 1, 2, 3 ]

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/93479.html

相关文章

  • 我的前端集成测试(一)- 认识node的assert模块

    摘要:类的一个子类,表明断言的失败。可用于测试回调函数的参数。使用比较法测试参数与参数是否不全等。等待的完成,如果是一个函数,则立即调用该函数并等待返回的完成,然后检查是否被。 FEAT FrontEnd Automates Test 前端全自动化测试 序章 文章开头先引一个知乎上的问答:如何进行前端自动化测试? 我相信做过前端的朋友都有这个疑问。希望这篇文章里你能看到一些别人的测试方法,帮...

    Jinkey 评论0 收藏0
  • javascript异步中的回调

    摘要:如果你把函数的指针地址作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。 同期异步系列文章推荐谈一谈javascript异步javascript异步与promisejavascript异步之Promise.all()、Promise.ra...

    WalkerXu 评论0 收藏0
  • Promise对象

    摘要:对比回调函数和暂时不管是什么,先看一下下面的代码,看一看的好处。回调函数执行一次首先,定义一个回调函数,调用一次,看看这个代码的写法。上面的代码中,在方法中需要传递两个回调函数,这样看着会有点乱。 对比回调函数和Promise 暂时不管Promise是什么,先看一下下面的代码,看一看Promise的好处。需要特别说明的是,在这个对比的中,Promise和回调都没有考虑存在异常的情况。 ...

    琛h。 评论0 收藏0
  • 用co玩转异步

    摘要:否则不会得到异步之后的值对象的值,并没有在中进行处理,而是直接作为返回值返回到对象外面了这就是的魔法。当生成器函数内的逻辑执行完毕且没有错误之后,这个对象返回值变为状态,且将生成器的返回值作为出来的值。 之前我在关于Promise的文章中提到了co这个库。在这篇文章里,我将写一写自己对它的认识。 Trust me,用了co库,你不想用别的,来它半斤异步调用你一口能吃仨。 但是我对Tj大...

    microelec 评论0 收藏0
  • fetch,终于认识

    摘要:说明一点,下面演示的请求或请求,都是采用百度中查询到的一些接口,可能传递的有些参数这个接口并不会解析,但不会影响这个接口的使用。 fetch和XMLHttpRequest 如果看网上的fetch教程,会首先对比XMLHttpRequest和fetch的优劣,然后引出一堆看了很快会忘记的内容(本人记性不好)。因此,我写一篇关于fetch的文章,为了自己看着方便,毕竟工作中用到的也就是一些...

    wzyplus 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<