美文网首页
4.网络请求 + promise异步编程

4.网络请求 + promise异步编程

作者: LucXion | 来源:发表于2023-10-12 00:11 被阅读0次
网络请求 wx : request

1.小程序中只能使用 HTTPS 请求
2.域名必须添加到 '域名信任列表'中
3.开发环境,可以设置开发工具中的 详情 - 本地设置 - 不校验合法域名
小程序内的网络请求,不是跨域请求,也不是ajax请求

/**
默认方法是 GET
请求体 body 内容放在 data 字段中
success 默认接收参数是 result 不是 res
字符串一律用 单引号 ' 引用
*/ 
        wx.request({
          url: 'url',
          method : 'POST',
          data : {
            msg : '念念不忘 必有回响'
          },
          success: (result) => {},
          fail: (err) => {},
          complete: (res) => {},
        })
Promise
  • Promise 实例化
instantiatePromise() {
        console.log('1.开始执行')
        /*
        语法:
        Promise( (参数1:resole,参数2:reject) => 闭包 )
        参数1、参数2 都是函数类型的回调,可以传参
        闭包: 内部可执行异步函数,并在合适的时机调用 resole、reject,改变Promise 的状态
        */ 
        new Promise((resole, reject) => {
            console.log('2.实例化Promise后会直接执行闭包,Promise自动进入待定状态')
            setTimeout(() => {
                console.log('5.耗时操作执行完成')
                const success = true
                if (success){
                    resole('6.手动调用resole回调,Promise状态 已兑现')
                } else {
                    reject('7.手动调用reject回调,Promise状态 已拒绝')
                }
            }, 3);
            console.log('3.Promise闭包内的异步操作不会阻塞线程')
        })
        console.log('4.当前函数结束')
    }
  • Promise + then 链式调用
// 链式调用
    promiseCallChaining() {

        /*
        1. Promise 有两个回调属性支持链式调用,分别是 then 和 catch,没有finally
        2. funcA 和 funcB 的返回值都是 Promise
        */ 
        this.funcA().then((res) => {
            /*
            这里只有一个可能会执行,即 funcA 的 Promise 最终状态是 已兑现(resolv)
            */ 
            return this.funcB()
        }).catch((msg)=>{
            /*
            Promise的 then 和 catch 具备 switch 的穿透特性,因此执行到当前闭包的路径有两种。所以使用 then 和 catch 并不能很好的处理实际业务中的 成功和失败
            1. funcA-return Promise-reject
            2. funcA-return Promise-resolv && funcB-return Promise-reject
            */ 
        })
    }
  • Promise + async/await 串行
// async + await 语法结构
    async simplifyCalling () {
        console.log('1')
        // 用 try 捕获 promise已拒绝态,否则会报错
        try {
            console.log('2')
            const resA = await this.funcA();
            // 如果 funcA 返回的是已拒绝,当前代码块内,下面的代码将不会被执行,而是直接跳转到 catch 代码块内
            console.log('3')
            console.log(resA);

            const resB = await this.funcB();
            console.log('4')
            console.log(resB);

          } catch (error) {

            console.log('5')
            // error 即 reject 的传参
            console.log(error);
          }
          console.log('6')
    }

相关文章

  • promise解决了什么问题

    promise到底是做什么的?Promise是异步编程的一种解决方案 什么时候回来处理异步事件? (1)网络请求。...

  • promise使用方法

    promise是解决异步编程的方法。我们常用的使用场景就是网络请求 constfoo=()=>{ returnne...

  • 同步异步编程,微任务/宏任务

    同步异步编程 异步的有 : 定时器 事件绑定 Promise/async/await Ajax异步请求数...

  • Promise async/await

    promise是异步编程的一种解决方案,那么为什么要使用promise呢?比如说,当我们封装一个网络请求,因为不能...

  • ES6

    AJAX 异步网络请求 Promise 使用了Promise对象之后可以链式调用的方式组织代码 Promise.a...

  • Promise网络请求,异步编程封装,优雅

    1.什么是Promise,Promise到底是做什么的,有什么作用? Promise(承诺)是ES6中一个非常重要...

  • 深入了解下Promise

    Promise 意义 Promise 的诞生与 Javascript 中异步编程息息相关,js 中异步编程主要指 ...

  • Promise

    Promise对象就是一个异步请求占位符对象 把异步请求封装在Promise对象中,Promise的构造函数传入一...

  • Angular $q

    $q采用的是promise式的异步编程.什么是promise异步编程呢?异步编程最重要的核心就是回调,因为有回调函...

  • part1整理

    函数式编程:JavaScript函数式编程指南 异步编程:异步编程 Promise源码 JavaScript基础知...

网友评论

      本文标题:4.网络请求 + promise异步编程

      本文链接:https://www.haomeiwen.com/subject/wqiibdtx.html