Promise-用法

这篇具有很好参考价值的文章主要介绍了Promise-用法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.处理异步的几种方案

2.理解

3.promise状态:初始化

4.执行异步任务

5.执行异步任务成功

6.执行异步任务失败

7.执行异步任务成功-返回

8.执行异步任务失败-返回


1.处理异步的几种方案

  1. 纯粹callback,会剥夺函数return的能力
  2. promise,多个异步等待合并,不需要层层传递callback,但是没有脱离回调函数的本质。
  3. async await ES2017,最佳异步处理方法

2.理解

1.Promise对象代表了未来某个将要发生的事件,通常是一个异步操作

2.有了promise对象,可以将异步操作以同步的流程表达出来,避免了层层嵌套的回调函数(俗称回调地狱)

3.ES6的Promise是一个构造函数,用来生成promise实例

4.通过执行异步操作的结果取修改promise实例的状态,调用promise实例对象里面的then的成功或者失败的回调

3.promise状态:初始化

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>promise</title>
</head>
<body>

<script type="text/javascript">
let promise = new Promise((resolve,reject)=>{
    //初始化promise状态:pending:初始化
    console.log("123")
})
console.log("223")
</script>
</body>
</html>

Promise-用法

4.执行异步任务

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>promise</title>
</head>
<body>

<script type="text/javascript">
let promise = new Promise((resolve,reject)=>{
    //初始化promise状态:pending:初始化
    console.log("123")
    //执行异步操作,通常是发送ajax请求,开启定时器
    setTimeout(()=>{
        console.log("333")
    },2000)
})
console.log("223")
</script>
</body>
</html>

Promise-用法

5.执行异步任务成功

resolve(); 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>promise</title>
</head>
<body>

<script type="text/javascript">
let promise = new Promise((resolve,reject)=>{
    //初始化promise状态:pending:初始化
    console.log("123")
    //执行异步操作,通常是发送ajax请求,开启定时器
    setTimeout(()=>{
        console.log("333")
        //根据异步任务的返回结果修改promise的状态
        //异步任务执行成功
        resolve(); // 自动修改promise的状态为 fullfilled:成功状态
        //异步任务执行失败 reject
    },2000)
})
console.log("223")
// 需要调用resolve()或者reject(),才会走到then
promise.then(()=>{
            console.log("成功的回调")
            }
            ,()=>{
            console.log("失败的回调")
            })

</script>
</body>
</html>

Promise-用法

6.执行异步任务失败

reject();

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>promise</title>
</head>
<body>

<script type="text/javascript">
let promise = new Promise((resolve,reject)=>{
    //初始化promise状态:pending:初始化
    console.log("123")
    //执行异步操作,通常是发送ajax请求,开启定时器
    setTimeout(()=>{
        console.log("333")
        //根据异步任务的返回结果修改promise的状态
        //异步任务执行成功
        //resolve(); // 自动修改promise的状态为 fullfilled:成功状态
        //异步任务执行失败 rejected :失败的状态
        reject();
    },2000)
})
console.log("223")
// 需要调用resolve()或者reject(),才会走到then
promise.then(()=>{
            console.log("成功的回调")
            }
            ,()=>{
            console.log("失败的回调")
            })

</script>
</body>
</html>

Promise-用法

7.执行异步任务成功-返回

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>promise</title>
</head>
<body>

<script type="text/javascript">
let promise = new Promise((resolve,reject)=>{
    //初始化promise状态:pending:初始化
    console.log("123")
    //执行异步操作,通常是发送ajax请求,开启定时器
    setTimeout(()=>{
        console.log("333")
        //根据异步任务的返回结果修改promise的状态
        //异步任务执行成功
        let res = {
            msg:"异步任务执行成功",
            code:200
        }
        resolve(res); // 自动修改promise的状态为 fullfilled:成功状态
        //异步任务执行失败 rejected :失败的状态
        reject();
    },2000)
})
console.log("223")
// 需要调用resolve()或者reject(),才会走到then
promise.then((res)=>{
            console.log("成功的回调",res)
            }
            ,()=>{
            console.log("失败的回调")
            })

</script>
</body>
</html>

Promise-用法

8.执行异步任务失败-返回

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>promise</title>
</head>
<body>

<script type="text/javascript">
let promise = new Promise((resolve,reject)=>{
    //初始化promise状态:pending:初始化
    console.log("123")
    //执行异步操作,通常是发送ajax请求,开启定时器
    setTimeout(()=>{
        console.log("333")
        //根据异步任务的返回结果修改promise的状态
        //异步任务执行成功
        // let res = {
        //     msg:"异步任务执行成功",
        //     code:200
        // }
        // resolve(res); // 自动修改promise的状态为 fullfilled:成功状态
        //异步任务执行失败 rejected :失败的状态
        let res = {
            msg:"异步任务执行失败",
            code:500
        }
        reject(res);
    },2000)
})
console.log("223")
// 需要调用resolve()或者reject(),才会走到then
promise.then((res)=>{
            console.log("成功的回调",res)
            }
            ,(res)=>{
            console.log("失败的回调",res)
            })

</script>
</body>
</html>

Promise-用法文章来源地址https://www.toymoban.com/news/detail-477587.html

到了这里,关于Promise-用法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一段代码理解Python异步函数async的基本用法

    异步函数的使用规则 正常情况下我们的函数时串行的运行的,这里称之为主函数. 异步函数:与主函数并行运行. Python异步函数即async必须在普通函数的命名前加上 async 示例: 执行async函数 async函数内等待:只阻塞当前async函数 m_mock安装 通过上述代码示例可以发现case_a和case_b通过

    2024年02月15日
    浏览(52)
  • vue同时请求多个接口,接口请求完成后在处理下一个方法(Promise.all用法)

    Promise .all()方法用于将多个 Promise 实例,包装成一个新的 Promise 实例。 在处理多个异步处理时非常有用,比如说一个页面上需要等两个或多个ajax的数据回来以后才正常显示。 需要特别注意的是,Promise.all获得的成功结果的数组里面的数据顺序和Promise.all接收到的数组顺序是一

    2024年02月13日
    浏览(50)
  • async和await用法理解和快速上手 , 同步任务和异步任务顺序安排和轻松理解 , js代码执行顺序表面知道

    学习关键语句 : async , await 用法 await 怎么使用 同步任务和异步任务 微任务和宏任务 js中代码执行顺序 虽然说 async 和 await 是 Promise 的语法糖 , 但是用惯了Promise 的人(我) , 还真不能超快速使用上这个语法糖 , 所以赶紧写一篇文章出来让各位了解了解这个到底怎么用在我的项目

    2024年02月03日
    浏览(49)
  • 前端异步技术之Promise

    由于是参(抄)考(袭)前辈的polyfill,自己编码测试时出现了两处错误,ES6 Promise 规范的2.3.1和2.3.4 2.3.1 你们的支持是我最大的动力,熬夜码字不易,如果此文对你有帮助,请不吝star---https://github.com/chenchangyuan/promise 有兴趣加笔者好友的同学请扫描下方二维码(1.本人微信,

    2024年02月08日
    浏览(69)
  • 前端异步编程 —— Promise对象

    在前端编程中,处理一些简短、快速的操作,在主线程中就可以完成。 但是,在处理一些耗时比较长以至于比较明显的事情,比如读取一个大文件或者发出一个网络请求,就需要异步编程来实现,以避免只用主线程时造成页面一时无法响应的事情。 以发送网络请求为例,在

    2024年02月08日
    浏览(71)
  • 异步同步化( Promise 详解)

    ES 6 Promise的用法 一 、为什么要使用Promise “ 回调地狱 ”这个词,不知道大家听过没有,就是异步调用 获取到结果 后, 为下一个异步函数提供 参数 ,所以就会一层一层的出现回调里面 嵌入回调,导致层次很深,代码维护起来特别的复杂,看一下下面的小案例大家就知道什

    2024年02月16日
    浏览(47)
  • promise及异步编程async await

    ECMAScript 6 新增了正式的 Promise(期约)引用类型,支持优雅地定义和组织异步逻辑。接下来几个版本增加了使用 async 和 await 定义异步函数的机制 JavaScript 是单线程事件循环模型。异步行为是为了优化因计算量大而时间长的操作,只要你不想为等待某个异步操作而阻塞

    2024年02月04日
    浏览(43)
  • JS中的异步编程与Promise

    在了解JavaScript的异步机制之前,我们首先需要理解JavaScript是一种单线程语言。单线程就意味着所有的任务需要按照顺序一次执行,如果前一个任务没有完成,后一个任务就无法开始。这个特性在执行大量或耗时任务时可能会导致阻塞或者界面卡死,这显然是不可取的。 为了

    2024年02月08日
    浏览(51)
  • [javascript核心-04]彻底弄懂Promise异步编程

    本文github地址:JavaScript_Interview_Everything 大前端知识体系与面试宝典,从前端到后端,全栈工程师,成为六边形战士 1.1. 快速上手 01快手上手.js 02.若传入的是另一个promise对象,则状态由传入的promise对象决定 03.若传入了一个实现了 then 方法的对象,则执行该then方法且由此方法

    2024年02月08日
    浏览(41)
  • 微信小程序异步请求数据promise方法

    在小程序中可以直接使用promise,我们需要做的就是在A函数中返回一个promise,在返回的promise中再进行获取数据的操作,把成功获取到的数据传入resolve中,把失败的结果传入reject,然后在B函数中调用A函数,调用后再使用.then 和 .catch 分别对成功和失败的结果进行处理

    2024年02月06日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包