Promise基础

选中文字可对指定文章内容进行评论啦,绿色背景文字可以点击查看评论额。

Promise定义

Promise通常与异步操作相关联,本质上它是一个值的占位符。这个值可能是已知的,更通常的情况是一个异步操作的返回值。函数可以返回一个Promise,以此替代订阅一个事件或者传递一个回调函数给某个函数。如下:

// fetch() promises to complete at some point in the future
const promise = fetch("books.json");

fetch() 函数是 JavaScript 运行时发出网络请求的常用工具函数。fetch() 的调用实际不会立即完成网络请求; 而是将来完成请求。 该函数返回一个代表异步操作的 promise 对象(在本例中存储在 promise 变量中,您可以随意命名),以便将来可以使用它。 究竟什么时候能够处理这个结果取决于 Promise 的生命周期是如何进行的。

 

Promise生命周期

每个Promise都会经历一个叫做Pending状态开始的短暂生命周期,此状态表明Promise未完成。一个Pending状态的Promise也被称为unsettled。前一个例子中的Promise就处于Pending状态,一直到fetch返回。一旦Promise完成,Promise被认为settled,并进入两种可能的状态之一,如图所示:

1. Fulfilled:Promise已成功完成。
2. Rejected:由于错误或其他原因,promise 没有成功完成。

内部 [[PromiseState]] 属性设置为“Pending”、“fulfilled”或“rejected”以反映承诺的状态。 这个属性没有暴露在 Promise 对象上,所以你不能以编程方式确定 Promise 处于哪个状态。 你可以使用 then() 方法在 Promise 改变状态时采取特定的行动。

版权声明:著作权归作者所有。

相关推荐

TypeScript:基本类型详解

布尔值(Boolean)TypeScript的布尔值和JavaScript一样有两个值:true和false。类型标识:boolean示例:let isDone: boolean = false; 数字(Number)和JavaScript一样,TypeScript的所有数字都是用浮点数表示,支持二进制,八进制,十进制以及十六进制的表示方式,类型标识:num

Kotlin:基本类型 - 数值

内置数值类型Kotlin和Java的数值类型很接近,内置了6中数值类型:Double:64 Float:32 Long:64 Int:32 Short:16 Byte:8 在Java里,char类型也是一种数值类型,可以和其他数值类型转换,而在Kotlin则没有把char类型作为数值类型。字面量整数整数类型:Shot,Int和Long。和Java一样,Long类型的字面量在数字后面加上L来表示。&

Kotlin:数组的基本操作

Kotlin使用Array类来表示数组,构造函数为:<init> Array(size: Int, init: (Int) -> T) size:数组大小init:初始化数组创建数组Kotlin提供了几种方法方便我们创建数组,包括:构造函数,标准库提供的arrayOf, arrayOfNulls 和emptyArray等 。构造函数// 创建 一个值

Kotlin:基本类型 - Char与Boolean

字符类型Kotlin使用Char表示字符,与Java不同的是,它并不能直接和数字做类型转换。字符表示它们使用单引号''把字符括起来特殊字符:特殊字符串使用反斜杠开头,如\t, \b, \n, \r, \', \", \\ and \$其他一些字符可以使用Unicode编码,如'\uFF00'数字转换Kotlin的字符不能直接和数字做类型转换,但我们可以它们的unicode码的相对差来做数

Kotlin:基本类型 - 字符串

Kotlin字符串使用String表示类型,为不可变类型。字符串表示字符串有两种表示方式:单行和多行。 单行单行使用双引号把内容括起来。val s = “Hello,World” 如果需要在单行里表示换行的字符串需要对换行符转义val s = “Hello, World \n” 多行多行用来表示原始的字符串,

Angular 5:HttpClient的基本用法

Angular 4.3引入了新的用于http请求的接口HttpClient。它旨在替换之前版本的接口Http。有以下新特性:对响应的body做类型检查默认返回的是JSON对象,不再需要使用json()显式解析返回的数据支持拦截器支持进度事件请求后验证和基于刷新的测试框架安装HttpClientModuleHttpClient属于@angular/common/http包的模块HttpCl

JavaScript Async/Await和Promise的对比

从Node 8 LTS开始,Node完全支持Async/Await。这里通过示例的方式对比Async/Await和Promise。简单介绍下Async/Await:Async/Await是一种新的编写异步代码的方式。其他方式是回调或者Promise。Async/Await实质是构建在Promise之上,它不能用于纯的回调或者Node.js的回调中。和Promise一样,Async/Await是非阻

TTree scan函数的基本用法

TTree scan函数原型Long64_t Scan(const char* varexp = "", const char* selection = "", Option_t* option = "", Long64_t nentries = 1000000000, Long64_t firstentry = 0)description: Loop over tree entries and

CKEditor5事件系统(基础使用)

最近在学习CK5,一种最大的感受就是CK5的架构不是很大,但是内容特别多。笔者在学习中,总结出一个浅显的道理,那就是掌握基础知识,对框架宏观把握,学习起来会事半功倍。 今天开始初步研究一下CK5的事件系统:在CK5的事件系统中,关键的一个对象被称作Emitter(发射器),Emitter是一个可以发送事件的对象。如何创建一个Emitter,下面的代码创建了一个混合了事件发送的AnyCla