freeCodeCamp “promise“ 几个练习

目录

1.创建一个 JavaScript Promise

2.通过 resolve 和 reject 完成 Promise

3.用 then 处理 Promise 完成的情况

4.使用 catch 处理 Promise 失败的情况


1.创建一个 JavaScript Promise

Promise 是异步编程的一种解决方案 - 它在未来的某时会生成一个值。 任务完成,分执行成功和执行失败两种情况。 Promise 是构造器函数,需要通过 new 关键字来创建。 构造器参数是一个函数,该函数有两个参数 - resolve 和 reject。 通过它们来判断 promise 的执行结果。 用法如下:

const myPromise = new Promise((resolve, reject) => {

});

2.通过 resolve 和 reject 完成 Promise

Promise 有三个状态:pendingfulfilled 和 rejected上一个挑战里创建的 promise 一直阻塞在 pending 状态里,因为没有调用 promise 的完成方法。 Promise 提供的 resolve 和 reject 参数就是用来结束 promise 的。Promise 成功时调用 resolve,promise 执行失败时调用 reject, 如下文所述,这些方法需要有一个参数

const myPromise = new Promise((resolve, reject) => {
  if(condition here) {
    resolve("Promise was fulfilled");
  } else {
    reject("Promise was rejected");
  }
});

上面的示例使用字符串作为这些函数的参数,但参数实际上可以是任何格式。 通常,它可能是一个包含数据的对象,你可以将它放在网站或其他地方。


使 promise 可以处理成功和失败情况。 如果 responseFromServer 是 true,调用 resolve 方法使 promise 成功。 给 resolve 传递值为 We got the data 的字符串。 如果 responseFromServer 是 false, 使用 reject 方法并传入值为 Data not received 的字符串。

练习:

const makeServerRequest = new Promise((resolve, reject) => {
  // responseFromServer 设置为 true,表示从服务器获得有效响应
  let responseFromServer = true;

  if(responseFromServer) {
    resolve("We got the data");
  } else {  
    reject("Data not received");
  }
});

3.用 then 处理 Promise 完成的情况

当程序需要花费未知的时间才能完成时(比如一些异步操作),一般是服务器请求,promise 很有用。 服务器请求会花费一些时间,当结束时,需要根据服务器的响应执行一些操作。 这可以用 then 方法来实现, 当 promise 完成 resolve 时会触发 then 方法。

练习:

给 promise 添加 then 方法。 用 result 做为回调函数的参数并将 result 打印在控制台。 

makeServerRequest.then(result => {
  console.log(result);
});

4.使用 catch 处理 Promise 失败的情况

当 promise 失败时会调用 catch 方法。 当 promise 的 reject 方法执行时会直接调用。

练习:

给 promise 添加 catch 方法。 用 error 作为回调函数的参数,并把 error 打印到控制台。

makeServerRequest.catch(error=>{
  console.log(error);
});

 


版权声明:本文为qq_34285232原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。