promi的实现原理

更新时间:2023-06-28 19:51:33 阅读: 评论:0

promi的实现原理
 
 
  Promi的实现原理
 
鱿鱼怎么清理干净  Promi是一种异步编程的解决方案,它可以让我们更加方便地处理异步操作,避免了回调地狱的问题。在ES6中,Promi被正式引入,成为了JavaScript中的一等公民。那么,Promi的实现原理是什么呢?
 
  Promi的实现原理可以分为三个部分:状态、值和回调。
 
  状态
 
  Promi有三种状态:pending(等待中)、fulfilled(已完成)和rejected(已拒绝)。当我们创建一个Promi对象时,它的初始状态是pending。当我们调用resolve方法时,Promi的状态会变为fulfilled;当我们调用reject方法时,Promi的状态会变为rejected。
 
  值
春水汇 
五言诗句  Promi的值可以是任何JavaScript值,包括undefined、null、数字、字符串、对象等等。当Promi的状态变为fulfilled时,它的值就是resolve方法的参数;当Promi的状态变为rejected时,它的值就是reject方法的参数。
如胶似漆是什么意思 
  回调
 
  Promi的回调函数有两个参数:resolve和reject。当我们调用resolve方法时,Promi的状态会变为fulfilled,并且会执行then方法中的第一个回调函数;当我们调用reject方法时,Promi的状态会变为rejected,并且会执行then方法中的第二个回调函数。
 
  Promi的实现原理可以用以下代码来表示:
 
  ```
  class Promi {
    constructor(executor) {
      this.status = 'pending';
      this.value = undefined;钻石怎么辨别真假
      ason = undefined;
      FulfilledCallbacks = [];
      RejectedCallbacks = [];
 
      const resolve = (value) => {
        if (this.status === 'pending') {
          this.status = 'fulfilled';
          this.value = value;
          FulfilledCallbacks.forEach((callback) => callback());
        }
      };
 
      const reject = (reason) => {
        if (this.status === 'pending') {
          this.status = 'rejected';
          ason = reason;
          RejectedCallbacks.forEach((callback) => callback());
        }
      };
 
      try {
        executor(resolve, reject);
      } catch (error) {
        reject(error);
      }
    }
 
    then(onFulfilled, onRejected) {
      onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : (value) => value;
      onRejected = typeof onRejected === 'function' ? onRejected : (reason) => { throw reason };
 
      const promi2 = new Promi((resolve, reject) => {
防侧滑>描写小狗的句子        if (this.status === 'fulfilled') {
          tTimeout(() => {
            try {
              const x = onFulfilled(this.value);
              resolvePromi(promi2, x, resolve, reject);
            } catch (error) {
              reject(error);
空心菜的做法            }
          }, 0);
        } el if (this.status === 'rejected') {
          tTimeout(() => {
            try {
              const x = ason);
              resolvePromi(promi2, x, resolve, reject);
            } catch (error) {
              reject(error);
            }
          }, 0);
        } el {
          FulfilledCallbacks.push(() => {
            tTimeout(() => {
              try {
                const x = onFulfilled(this.value);
                resolvePromi(promi2, x, resolve, reject);

本文发布于:2023-06-28 19:51:33,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1061159.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:回调   状态   方法   原理
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图