iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > html >js中Promise是什么
  • 725
分享到

js中Promise是什么

2024-04-02 19:04:59 725人浏览 泡泡鱼
摘要

这篇文章主要为大家展示了“js中Promise是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“js中Promise是什么”这篇文章吧。Promise是什么,

这篇文章主要为大家展示了“js中Promise是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“js中Promise是什么”这篇文章吧。

Promise是什么,可以手写实现一下吗?

Promise,翻译过来是承诺,承诺它过一段时间会给你一个结果。从编程讲Promise 是异步编程的一种解决方案。下面是Promise在MDN的相关说明:

Promise 对象是一个代理对象(代理一个值),被代理的值在Promise对象创建时可能是未知的。它允许你为异步操作的成功和失败分别绑定相应的处理方法(handlers)。 这让异步方法可以像同步方法那样返回值,但并不是立即返回最终执行结果,而是一个能代表未来出现的结果的promise对象。

一个 Promise有以下几种状态:

  • pending: 初始状态,既不是成功,也不是失败状态。

  • fulfilled: 意味着操作成功完成。

  • rejected: 意味着操作失败。

这个承诺一旦从等待状态变成为其他状态就永远不能更改状态了,也就是说一旦状态变为 fulfilled/rejected 后,就不能再次改变。 可能光看概念大家不理解Promise,我们举个简单的栗子;

假如我有个女朋友,下周一是她生日,我答应她生日给她一个惊喜,那么从现在开始这个承诺就进入等待状态,等待下周一的到来,然后状态改变。如果下周一我如约给了女朋友惊喜,那么这个承诺的状态就会由pending切换为fulfilled,表示承诺成功兑现,一旦是这个结果了,就不会再有其他结果,即状态不会在发生改变;反之如果当天我因为工作太忙加班,把这事给忘了,说好的惊喜没有兑现,状态就会由pending切换为rejected,时间不可倒流,所以状态也不能再发生变化。

上一条我们说过Promise可以解决回调地狱的问题,没错,pending 状态的 Promise 对象会触发 fulfilled/rejected 状态,一旦状态改变,Promise 对象的 then 方法就会被调用;否则就会触发 catch。我们将上一条回调地狱的代码改写一下:

new Promise((resolve,reject) => {
     setTimeout(() => {
            console.log(1)
            resolve()
        },1000)
        }).then((res) => {
    setTimeout(() => {
            console.log(2)
        },2000)}).then((res) => {
    setTimeout(() => {
            console.log(3)
        },3000)}).catch((err) => {console.log(err)})

其实Promise也是存在一些缺点的,比如无法取消 Promise,错误需要通过回调函数捕获。

promise手写实现,面试够用版:

function myPromise(constructor){
    let self=this;
    self.status="pending" //定义状态改变前的初始状态
    self.value=undefined;//定义状态为resolved的时候的状态
    self.reason=undefined;//定义状态为rejected的时候的状态
    function resolve(value){
        //两个==="pending",保证了状态的改变是不可逆的
       if(self.status==="pending"){
          self.value=value;
          self.status="resolved";
       }
    }
    function reject(reason){
        //两个==="pending",保证了状态的改变是不可逆的
       if(self.status==="pending"){
          self.reason=reason;
          self.status="rejected";
       }
    }
    //捕获构造异常
    try{
       constructor(resolve,reject);
    }catch(e){
       reject(e);
    }}// 定义链式调用的then方法myPromise.prototype.then=function(onFullfilled,onRejected){
   let self=this;
   switch(self.status){
      case "resolved":
        onFullfilled(self.value);
        break;
      case "rejected":
        onRejected(self.reason);
        break;
      default:       
   }}

以上是“js中Promise是什么”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网html频道!

--结束END--

本文标题: js中Promise是什么

本文链接: https://www.lsjlt.com/news/96198.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • js中Promise是什么
    这篇文章主要为大家展示了“js中Promise是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“js中Promise是什么”这篇文章吧。Promise是什么,...
    99+
    2024-04-02
  • js中Promise有什么用
    小编给大家分享一下js中Promise有什么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!promise可以处于等待被赋值的等待态(pending),可以给出值并转换为解决态(resolved)。一旦promise被一个...
    99+
    2023-06-25
  • JS中Promise的使用及封装方法是什么
    这篇文章主要介绍了JS中Promise的使用及封装方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JS中Promise的使用及封装方法是什么文章都会有所收获,下面我们一起来看看吧。Promise 是什么...
    99+
    2023-07-05
  • JS中Promise axios请求结果.then()指的是什么意思
    这篇文章主要为大家展示了“JS中Promise axios请求结果.then()指的是什么意思”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JS中Promise axios请...
    99+
    2023-06-28
  • javascript中Promise原理是什么
    本篇内容主要讲解“javascript中Promise原理是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“javascript中Promise原理是什么”吧...
    99+
    2024-04-02
  • javascript Promise是什么
    这篇文章主要介绍“javascript Promise是什么”,在日常操作中,相信很多人在javascript Promise是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2024-04-02
  • js中关于promise怎么使用
    这篇文章主要介绍“js中关于promise怎么使用”,在日常操作中,相信很多人在js中关于promise怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”js中关于promise怎么使用”的疑惑有所帮助!...
    99+
    2023-07-05
  • js中promise的用法介绍
    这篇文章主要介绍“js中promise的用法介绍”,在日常操作中,相信很多人在js中promise的用法介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”js中promise...
    99+
    2024-04-02
  • es6中promise对象的状态是什么
    这篇文章主要介绍“es6中promise对象的状态是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“es6中promise对象的状态是什么”文章能帮助大家解决问题...
    99+
    2024-04-02
  • c++中promise函数的作用是什么
    在C++中,promise是一种用于在异步操作中传递结果的机制。它允许一个线程(通常是调用异步操作的线程)设置一个值,而另一个线程等...
    99+
    2024-03-15
    c++
  • JS中Promise面试题有哪些
    这篇文章给大家分享的是有关JS中Promise面试题有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。JavaScript是什么JS是JavaScript的简称,它是一种直译式的脚本语言,其解释器被称为Java...
    99+
    2023-06-14
  • Promise异步操作是什么
    这篇文章主要讲解了“Promise异步操作是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Promise异步操作是什么”吧!什么是异步操作?所谓异步操作,指的是可以跟当前程序同时执行的操...
    99+
    2023-06-03
  • es6中promise是什么及有哪些作用
    这篇文章主要讲解了“es6中promise是什么及有哪些作用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“es6中promise是什么及有哪些作用”吧! ...
    99+
    2024-04-02
  • js中什么是类
    小编给大家分享一下js中什么是类,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!什么是类?类(class)是在 JS 中编写构造函...
    99+
    2024-04-02
  • js中Iterator是什么
    这篇文章将为大家详细讲解有关js中Iterator是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Iterator是什么,有什么作用?Iterator是理解第61条的...
    99+
    2024-04-02
  • 微信小程序中wx-promise-request是什么
    这篇“微信小程序中wx-promise-request是什么”文章,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要参考一下,对于“微信小程序中wx-promise-request是什么”,小编整理了以下知识点,请大家...
    99+
    2023-06-26
  • Javascript中promise,async和await的区别是什么
    本文小编为大家详细介绍“Javascript中promise,async和await的区别是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Javascript中promise,async和await的区别是什么”文章能帮助大家解决疑惑...
    99+
    2023-06-29
  • js中关于promise的用法解读
    目录一、概述二、Promise的状态三、基本用法四、Promise的then方法五、Promise的其他方法reject用法catch用法all用法race用法总结一、概述 Prom...
    99+
    2023-03-06
    js中promise的用法 关于promise用法 js promise
  • Promise的基本用法是什么
    本篇内容主要讲解“Promise的基本用法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Promise的基本用法是什么”吧!基本用法1. 语法new&nb...
    99+
    2024-04-02
  • es6中promise什么时候用
    本教程操作环境:windows7系统、ECMAScript 6版、Dell G3电脑。Promise的含义Promise是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6将其写进了...
    99+
    2022-11-22
    javascript promise ES6
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作