美文网首页
小程序Promise避免wx.request回调地狱

小程序Promise避免wx.request回调地狱

作者: 送外卖的程序员 | 来源:发表于2020-02-24 21:01 被阅读0次

通常在微信小程序的商城项目中,常常需要wx.request调用API接口,从服务器端返回已经存储好的数据并且进行json格式化,将返回的数据进行渲染。但页面结构可能需要多次调用API接口,导致wx.request中继续套嵌wx.request,如此循环。这样就形成了回调地狱,所以为了避免这种情况,我们可以通过promise和wx.request来优化代码。

先看下可能性的回调地狱状况:

    wx.request({

            url: 'https://xxx.com/getId',

            success: (res) => {

                    this.setData({

                        // 数据处理
                    })

                    wx.request({

                            url: 'https://xxx.com/getImageById',

                            success: (res) => {

                                    this.setData({

                                            // 数据处理

                                       })

                                    wx.request({

                                               url: 'https://xxx.com/getDataById',

                                                success: (res) => {

                                                        this.setData({

                                                                   // 数据处理

                                                        })

                                                     }

                                                })

                                            }

                                        })

                                    }

                                })

我们先看下通过promise优化后的代码:

     request.js代码:封装request并export接口

      export const request = (params) => {

            return new Promise((resolve, reject) => {

                    wx.request({

                            ...params,

                            success: (res) => {

                                    resolve(res);

                            },

                            fail:(err) => {

                                    reject(err);

                              }

                    });        

            })

        }

        index.js修改主页wx.request代码:

                import {requset} from "../request/request.js";

                ...其他代码

                onLoad: function (options) {

                        request({url:"https://xxx.com/getById"})

                            .then(result=> {

                                    this.setData({

                                            // 处理数据

                                    })

                            })

                    }    

        这是比较简单优化wx.request的回调,如果有内嵌wx.request,可以继续使用.then(),如此循环。

相关文章

  • 小程序Promise避免wx.request回调地狱

    通常在微信小程序的商城项目中,常常需要wx.request调用API接口,从服务器端返回已经存储好的数据并且进行j...

  • 小程序中使用async

        在小程序开发时,我们请求数据,就需要使用promise或者async处理异步请求,避免掉入回调地狱。而as...

  • Promise

    1.为什么需要Promise 回调地狱回调函数中嵌套回调Promise解决了回调地狱 2. Promise 的基本...

  • ES6(十一)—— Promise(更优的异步编程解决方案)

    目录 说到Promise就不得不说道说道这 —— 回调地狱 Promise —— 解决回调地狱Promise语法规...

  • ES6之Promise

    Promise用法讲解 避免回调地狱,解决异步多次回调问题 Promise构造函数接受两个个函数作为参数,该函数的...

  • promise和async

    Promise 回调地狱 Promise概念 Promise是ES6中新增的一个构造函数。 目的解决回调地狱的问题...

  • ES6快速学习(七)Promise

    回调函数 Promise 解决了什么痛点 回调地狱 代码如下 我的第一个Promise使用 解决回调地狱之链式...

  • 深入理解 promise:promise的三种状态与链式调用

    promise出现的目的一为处理JavaScript里的异步,再就是避免回调地狱。 一、promise的三种状态和...

  • 个人笔记

    同步/异步 回调函数=> 回调地狱 setInterval/setTimeout =>Promise=>Gener...

  • promise

    promise解决回调地狱, 实现链式操作

网友评论

      本文标题:小程序Promise避免wx.request回调地狱

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