博客
关于我
经典面试题目之:promise
阅读量:341 次
发布时间:2019-03-04

本文共 1318 字,大约阅读时间需要 4 分钟。

Promise

为什么使用Promise

Promise是一种解决异步编程的技术,它能够帮助我们避免界面冻结,并提高程序的执行效率。

在传统的同步代码中,如果一个操作耗时较长,会阻塞后续代码的执行,导致界面失去响应。例如,假设你正在等待一张桌子的服务完成,其他客人可能需要等待很长时间才能得到服务。这就是同步编程的问题。

而异步编程则不同,它允许我们将耗时较长的操作交给系统处理,继续执行其他任务。当系统完成前面的操作后,会通过回调或者事件来通知我们,可以继续处理剩下的工作。这样,AB两个任务的执行顺序和完成时间就不再相关了,这就是所谓的“异步”。

Promises是什么

Promises是一个对象,它能够帮助我们处理异步操作,并通过回调的方式来获取结果。与传统的回调函数不同,Promises允许我们将多个异步操作进行合并处理,简化了代码结构。

Promises通过`resolve`和`reject`两个参数来管理状态。当异步操作成功完成时,`resolve`会将Promise状态从“未完成”变为“成功”,并传递结果;如果操作失败,`reject`会将状态变为“失败”,并传递错误信息。

代码示例:

```javascriptnew Promise(function(resolve, reject) { // 执行耗时的异步操作 resolve('成功'); // 数据处理完成}).then(function(res) { console.log(res); // 输出结果}, function(err) { console.log(err); // 处理错误});```

Promises的三个状态

Promises的状态分为三个阶段:

1. **Pending(待定)**:这是Promise的初始状态,表示操作尚未开始处理。 2. **Fulfilled(实现)**:表示操作成功完成,状态变为“成功”。 3. **Rejected(被否决)**:表示操作失败,状态变为“失败”。

一旦Promise的状态发生改变,就会触发`.then()`方法中的回调函数,处理后续步骤。

示例:

```javascriptnew Promise(resolve => { setTimeout(() => { resolve('hello'); }, 2000);}).then(res => { console.log(res); // 输出 'hello'});```

另一个示例:

```javascriptnew Promise(resolve => { setTimeout(() => { resolve('hello'); }, 2000);}).then(val => { console.log(val); // 输出 'hello' return new Promise(resolve => { setTimeout(() => { resolve('world'); }, 2000); });}).then(val => { console.log(val); // 输出 'world'});```

转载地址:http://fase.baihongyu.com/

你可能感兴趣的文章
numpy中的argsort的用法
查看>>
NumPy中的精度:比较数字时的问题
查看>>
numpy判断对应位置是否相等,all、any的使用
查看>>
Numpy多项式.Polynomial.fit()给出的系数与多项式.Polyfit()不同
查看>>
Numpy如何使用np.umprod重写range函数中i的python
查看>>
numpy学习笔记3-array切片
查看>>
numpy数组替换其中的值(如1替换为255)
查看>>
numpy数组索引-ChatGPT4o作答
查看>>
NUMPY矢量化np.prod不能构造具有超过32个操作数的ufunc
查看>>
Numpy矩阵与通用函数
查看>>
numpy绘制热力图
查看>>
numpy转PIL 报错TypeError: Cannot handle this data type
查看>>
Numpy闯关100题,我闯了95关,你呢?
查看>>
nump模块
查看>>
Nutch + solr 这个配合不错哦
查看>>
NuttX 构建系统
查看>>
NutUI:京东风格的轻量级 Vue 组件库
查看>>
NutzCodeInsight 2.0.7 发布,为 nutz-sqltpl 提供友好的 ide 支持
查看>>
NutzWk 5.1.5 发布,Java 微服务分布式开发框架
查看>>
NUUO网络视频录像机 css_parser.php 任意文件读取漏洞复现
查看>>