ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Promise基础

2021-09-10 22:35:00  阅读:150  来源: 互联网

标签:resolve console log 基础 promise reject Promise


Promise基本使用

Promise是JavaScript执行异步操作的执行方案

Promise 对象用于表示一个异步操作的最终完成 (或失败)及其结果值。

promise的一般执行步骤如下:

  1. promise构造函数接收两个回调函数,分别为resolve和reject,表示请求成功和请求失败

    注意:一定要在promise构造函数中执行上述两个回调函数,否则then方法将不会执行

  2. 在promise中定义异步执行任务,然后分别定义请求成功时与失败时所执行的方法

  3. 使用then执行请求成功时的任务,使用catch执行请求失败时的任务

例如:

const tNum = 2;
new Promise((resolve, reject) => {
    setTimeout(() => {
        console.log('hello world');
        if (tNum == 2) {
            resolve('hi you');
        } else {
            reject('error');
        }
    }, 1000);
}).then((message) => {
    console.log(message);
}).catch((message) => {
    console.log(message);
});

resolve和reject都可以传递参数,在then和catch中定义的函数默认参数就来自resolve和reject

promise补充

一个 Promise必然处于以下几种状态之一:

  • 待定(pending): 初始状态,既没有被兑现,也没有被拒绝。
  • 已兑现(fulfilled): 意味着操作成功完成。
  • 已拒绝(rejected): 意味着操作失败。

实质上, then和catch的返回值又是一个新的promise,因此可以链式使用

但在链式使用promise时,如果其中一个then回调的函数无法执行进入reject时,那么接下来的then不会再执行,这也说明了其链式的原则。如果有catch,则直接跳到最后的catch,否则停止执行

例如:

const tNum = 2;
new Promise((resolve, reject) => {
    setTimeout(() => {
        console.log('hello world');
        if (tNum == 2) {
            resolve('hi you');
        } else {
            reject('error');
        }
    }, 1000);
}).then(() => {
    console.log('message');
}).then(() => {
    console.log('message2');
    return new Promise((resolve, reject) => {
        reject('most error!');
    })
}).then(() => {
    console.log('message3');
}).catch((message) => {
    console.log(message);
})

实际上,将每个then和catch看作一个promise就会好理解许多

标签:resolve,console,log,基础,promise,reject,Promise
来源: https://www.cnblogs.com/JSW79/p/15253247.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有