JavaScript Promise与async/await

为什么要使用他们

前面学习了JavaScript的简单类型(例如 数字和字符串),我们的代码会按顺序从上往下执行

console.log(1111);
console.log(2222);
console.log(3333);

在这里插入图片描述

但是在实际项目中,我们经常执行长时间的任务,例如: 调用数据库打开文件 、远程调用api 进行交互等、订阅消息 通常不会立刻返回结果。很多是返回一个Promise(承诺)

Promise 是javaScript中一个特殊类型对象,代表异步操作的最终完成或失败

node项目内添加axios模块

npm i  --save axios

index.js里添加下面,我们用axios 调用get方法

const axiosRequest = require('axios')

let  response = axiosRequest.get("https://XXXX/prod-api/captchaImage");
 console.log(response.data);

命令行运行js,执行报错

node index.js

在这里插入图片描述

因为响应对象不是我们期望的,修改控制台输出命令,直接输出response

在这里插入图片描述

如何使用.then() 和.catch()

javaScript提供了两个方法
在这里插入图片描述
在Promise对象上使用一些特殊方法,当任务完成时,

该函数将在 promise resolved 且接收到结果后执行

promise.then(
  function(result) { /* handle a successful result */ },
  function(error) { /* handle an error */ }
);

.then 的第一个参数是一个函数,该函数将在 promise resolved 且接收到结果后执行。

.then 的第二个参数也是一个函数,该函数将在 promise rejected 且接收到 error 信息后执行。

在这里插入图片描述

 const axiosRequest = require('axios')

axiosRequest
.get("https://XXXX/prod-api/captchaImage") 
.then(response => {
  console.log(`you could  ${response.data.img}`)})
.catch(error =>{
    console.error(`ERROR ${error}`);
  });

如何将相同的代码转换成sync和Await关键字

await 允许我们等到 Promise 完成后再转下一行,更加整洁且易于阅读,javaScript要求我们的await关键字 在标有sync关键字函数内使用,所以让我们带有sync关键字标记的函数代替我们Promise 链

 const axiosRequest = require('axios')
 async function getMsg(){
   let response = await axiosRequest.get("https://XXXX/prod-api/captchaImage1")
  console.log(`you could  ${response.data.msg}`);    
 }

 getMsg();

如何捕获异常


const axiosRequest = require('axios')

axiosRequest
.get("https://XXXX/prod-api/captchaImage1")
 
.then(response => {
  console.log(`you could  ${response.data.img}`)})
  .catch(error =>{
    console.error(`ERROR ${error}`);
  });


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值