小数点儿_ 2023-04-08 10:58 采纳率: 83.3%
浏览 35
已结题

JavaScript Promise实例方法

请解释以下实例方法的作用,并举例说明使用方法

Promise.prototype.then
Promise.prototype.done
Promise.prototype.always
Promise.prototype.fail

在下列Promise所提供的方法中,用来向成功或者失败的回调函数队列中添加回调函数的是( )
A. done
B. then
C. always
D. fail

  • 写回答

3条回答 默认 最新

  • threenewbee 2023-04-08 11:11
    关注

    这些文档里都有,我就直接抄文档了,那个选择题,选择B,文档一看都清楚了。

    
    Promise.prototype.then(onFulfilled, onRejected)
    该方法用于注册一个回调函数,当Promise对象成功(fulfilled)时,会执行 onFulfilled 回调函数,并传递Promise对象的结果作为参数;当Promise对象失败(rejected)时,会执行 onRejected 回调函数,并传递Promise对象的拒因作为参数。该方法返回一个新的Promise对象,该新Promise对象的状态和结果由回调函数的返回值决定。
    例如:
    
    const promise = new Promise((resolve, reject) => {
      // 一些异步操作
      setTimeout(() => {
        const result = 'Success!';
        resolve(result);
      }, 1000);
    });
    
    promise.then((result) => {
      console.log(result); // 'Success!'
    }).catch((error) => {
      console.error(error);
    });
    Promise.prototype.done(onFulfilled, onRejected)
    该方法与 then() 方法类似,但是不返回一个新的Promise对象,也没有捕获错误的机制。相反,它在发生未处理的错误时,将错误直接抛出,使其在全局范围内捕获。
    例如:
    
    const promise = new Promise((resolve, reject) => {
      // 一些异步操作
      setTimeout(() => {
        const result = 'Success!';
        resolve(result);
      }, 1000);
    });
    
    promise.done((result) => {
      console.log(result); // 'Success!'
    }, (error) => {
      console.error(error);
    });
    Promise.prototype.always(onFinally)
    该方法注册一个回调函数,该回调函数在Promise对象完成(resolved)时执行,无论Promise对象是成功还是失败。回调函数没有参数,也不会影响Promise对象的状态或结果。该方法返回一个新的Promise对象,该新Promise对象与原Promise对象状态和结果相同。
    例如:
    
    const promise = new Promise((resolve, reject) => {
      // 一些异步操作
      setTimeout(() => {
        const result = 'Success!';
        resolve(result);
      }, 1000);
    });
    
    promise.then((result) => {
      console.log(result); // 'Success!'
    }).catch((error) => {
      console.error(error);
    }).finally(() => {
      console.log('Promise completed.'); // 'Promise completed.'
    });
    Promise.prototype.fail(onRejected)
    该方法与 then() 方法类似,但只注册处理Promise对象失败的回调函数。它返回一个新的Promise对象,该新Promise对象的结果由回调函数的返回值决定。
    例如:
    
    const promise = new Promise((resolve, reject) => {
      // 一些异步操作
      setTimeout(() => {
        const error = new Error('Error!');
        reject(error);
      }, 1000);
    });
    
    promise.fail((error) => {
      console.error(error.message); // 'Error!'
    });
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月18日
  • 已采纳回答 4月10日
  • 创建了问题 4月8日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效