Promise及其应用笔记

异步编程和Promise

如果程序调用某个方法,等待其执行全部处理后才能继续执行,我们称其为同步的。相反,在处理完成之前就返回调用方法则是异步的。在使用同步编程方式时,由于每个线程同时只能发起一个请求并同步等待返回,这种等待不仅使程序变慢,而且浪费了计算机资源,所以为了提高系统性能,此时我们就需要引入更多的线程来实现并行化处理,这就是异步编程的出发点。

异步编程是可以让程序并行运行的一种手段,其可以让程序中的一个工作单元与主应用程序线程分开独立运行,并且在工作单元运行结束后,会通知主应用程序线程它的运行结果或者失败原因。使用异步编程可以提高应用程序的性能和响应能力等。

Promise 是异步编程的一种解决方案,比传统的解决方案回调函数和事件更合理和更强大。

Promise对象有以下两个特点:

对象的状态不受外界影响。Promise对象代表一个异步操作,有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)。只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。Promise对象的状态改变,只有两种可能:从pending变为fulfilled和从pending变为rejected。只要这两种情况发生,状态就凝固了,不会再变了,会一直保持这个结果,这时就称为 resolved。如果改变已经发生了,你再对Promise对象添加回调函数,也会立即得到这个结果。

Promise作用与用法

Promise是一种用于处理异步操作的JavaScript对象。它可以将异步操作的结果以回调函数的形式返回给调用者,从而使得代码的执行更加流畅和可读。

Promise有三种状态:Pending(进行中)、Fulfilled(已完成)和Rejected(已拒绝)。当异步操作开始执行时,Promise的状态为Pending。当操作成功完成时,Promise的状态会变为Fulfilled,并将操作的结果作为参数传递给回调函数。当操作失败时,Promise的状态会变为Rejected,并将错误信息作为参数传递给回调函数。

Promise的用法主要包括以下几个步骤:

1. 创建Promise对象:使用Promise构造函数创建一个Promise对象,该对象包含一个异步操作。

2. 处理异步操作结果:使用then方法处理异步操作的结果。then方法接收两个参数:成功回调函数和失败回调函

数,分别处理异步操作成功和失败的情况。

3. 处理Promise链:如果需要多个异步操作依次执行,可以使用Promise链。在then方法中返回一个新的Promise对

象,然后继续调用then方法处理新的异步操作结果。

4. 处理异常情况:使用catch方法处理Promise链中的异常情况,避免程序出现错误。

5. 处理多个Promise对象:使用Promise.all方法同时处理多个Promise对象,等待所有异步操作完成后再执行回调函数。

总之,Promise可以帮助我们更加方便地处理异步操作,提高代码的可读性和可维护性。

then():

getJSON("./1.json").then(function(post) {

  return getJSON(post.commentURL);

}).then(function (comments) {

  console.log("resolved: ", comments);

catch:

getJSON('/posts.json').then(function(posts) {

}).catch(function(error) {

  // 处理 getJSON 和 前一个回调函数运行时发生的错误

  console.log('发生错误!', error);

});

Promise在实际环境下的应用

Promise在实际环境下的应用很广泛,以下是一些常见的应用场景:

1. 异步请求:Promise可以用来处理异步请求,例如发送AJAX请求、获取数据等。

2. 动画效果:Promise可以用来处理动画效果,例如在动画完成后执行一些操作。

3. 数据库操作:Promise可以用来处理数据库操作,例如插入、删除、更新等。

4. 文件上传:Promise可以用来处理文件上传,例如上传文件后执行一些操作。

5. 错误处理:Promise可以用来处理错误,例如在发生错误时执行一些操作。

6. 多个异步请求的处理:Promise可以用来处理多个异步请求的处理,例如在所有请求完成后执行一些操作。

7. 流程控制:Promise可以用来控制流程,例如在某个条件满足后执行一些操作。

8. UI交互:Promise可以用来处理UI交互,例如在用户点击某个按钮后执行一些操作。

 

 

async/await的作用与用法

async/await是ES2017中引入的一种异步编程语法糖,它的作用是简化异步编程的代码结构,使其更加易读和易维护。

async/await的用法如下:

1. 在函数声明前加上async关键字,表示该函数是一个异步函数。

2. 在异步函数中使用await关键字等待异步操作的结果,await关键字可以等待Promise对象的resolve()方法返回结果或任何返回值的表达式。

3. 在异步函数中使用try/catch语句捕获异步操作的错误。

例如,下面是一个使用async/await的简单示例:

async function getData() {

  try {

    const response = await fetch('https://api.github.com/users');

    const data = await response.json();

    console.log(data);

  } catch (error) {

    console.error(error);

  }

}

在上面的代码中,我们首先定义了一个异步函数getData(),然后使用await关键字等待fetch()方法返回的Promise对象的结果,再使用await关键字等待response.json()方法返回的Promise对象的结果,最后打印出获取到的数据。如果任何一个异步操作出错,就会被try/catch语句捕获并打印错误信息。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值