18083823889

官方客服电话

promise的用法(promise的用法和短语)

门窗网2024-03-09 09:33:31945

首先了解一下什么是Promise

Promise是抽象异步处理对象以及对其进行各种操作的组件。 其详细内容在接下来我们还会进行介绍,Promise并不是从JavaScript中发祥的概念。

Promise最初被提出是在 E语言中, 它是基于并列/并行处理设计的一种编程语言。

现在JavaScript也拥有了这种特性,这就是本书所介绍的JavaScript Promise。

另外,如果说到基于JavaScript的异步处理,我想大多数都会想到利用回调函数。

Promise是把类似的异步处理对象和处理规则进行规范化, 并按照采用统一的接口来编写,而采取规定方法之外的写法都会出错。先写一个简单的Promise进行异步处理的一个例子:

var promise = getAsyncPromise("fileA.txt"); //返回promise对象

promise.then(function(result){

// 获取文件内容成功时的处理

}).catch(function(error){

// 获取文件内容失败时的处理

});

除promise对象规定的方法(这里的 then 或 catch)以外的方法都是不可以使用的, 而不会像回调函数方式那样可以自己自由的定义回调函数的参数,而必须严格遵守固定、统一的编程方式来编写代码。

这样,基于Promise的统一接口的做法, 就可以形成基于接口的各种各样的异步处理模式。

所以,promise的功能是可以将复杂的异步处理轻松地进行模式化, 这也可以说得上是使用promise的理由之一。

下面先简单介绍一下promise:

在 ES6 Promises 标准中定义的API还不是很多。

目前大致有下面三种类型。

1、Constructor

Promise类似于 XMLHttpRequest,从构造函数 Promise

来创建一个新建新promise对象作为接口。

要想创建一个promise对象、可以使用new来调用 Promise的构造器来进行实例化。

var promise = new Promise(function(resolve, reject) {

// 异步处理// 处理结束后、调用resolve 或 reject

});

2、Instance Method

对通过new生成的promise对象为了设置其值在 resolve(成功) / reject(失败)时调用的回调函数 可以使用promise.then()

实例方法。

promise.then(onFulfilled, onRejected)


  • resolve(成功)时

    onFulfilled会被调用

  • reject(失败)时

    onRejected 会被调用

onFulfilled、onRejected 两个都为可选参数。

promise.then 成功和失败时都可以使用。 另外在只想对异常进行处理时可以采用 promise.catch(onRejected)这种方式,只指定reject时的回调函数即可。 不过这种情况下 应该是个更好的选择。

promise.catch(onRejected)

3、Static Method

像 Promise 这样的全局对象还拥有一些静态方法。

包括Promise.all()

还有 Promise.resolve()等在内,主要都是一些对Promise进行操作的辅助方法。


我们先来看一看下面的示例代码。

js中Promise的用法介绍

Promise构造器之后,会返回一个promise对象

为promise对象用设置 .then调用返回值时的回调函数。

asyncFunction这个函数会返回promise对象, 对于这个promise对象,我们调用它的then方法来设置resolve后的回调函数, catch方法来设置发生错误时的回调函数。

该promise对象会在setTimeout之后的16ms时被resolve, 这时then的回调函数会被调用,并输出'Async Hello world 。

在这种情况下catch的回调函数并不会被执行(因为promise返回了resolve), 不过如果运行环境没有提供setTimeout函数的话,那么上面代码在执行中就会产生异常,在catch中设置的回调函数就会被执行。

当然,像promise.then(onFulfilled, onRejected) 的方法声明一样, 如果不使用catch方法只使用 then方法的话,如下所示的代码也能完成相同的工作。

了解更多请扫描下面二维码关注。

js中Promise的用法介绍

js中Promise的用法介绍

js中Promise的用法介绍

本文链接:https://www.menchuangwang.com/post/fc9f9e81.html

阅读更多
在线咨询
手机:18083823889
电话咨询1
免费热线:18083823889
电话咨询2
免费热线:18083823889
关注微信
返回顶部