微信小程序前端promise封装

29次阅读

共计 1364 个字符,预计需要花费 4 分钟才能阅读完成。

config.js

const config = {base_url_api : "https://douban.uieee.com/v2/movie/",}

export {config}

http.js

import {config} from "../config";
class HTTP {requset({ url, method = "GET", data = {} }) {const promise = new Promise((resolve, reject) => {
            wx.request({
                url: config.base_url_api + url,
                data,
                method,
                header: {'Content-Type': 'json'},
                success: res => {// 状态码 toString() 转成字符串
                    const statusCode = res.statusCode.toString();

                    if (statusCode.startsWith("2")) {resolve(res.data)
                    } else {this._show_error();
                    }
                },
                fail: res => {reject(err);
                    this._show_error();}
            })
        })
        return promise;
    }
    _show_error() {
        wx.showToast({
            title: '网络错误',
            icon: 'none'
        })
    }
}
export {HTTP}

model/movie.js

import {HTTP} from "../utils/http";
class MovieModel extends HTTP{getInTheaters(){
        return this.requset({url:"in_theaters"})
    }
    getTop250(){
        return this.requset({url:"top250"})
    }
    getComingSoon(){
        return this.requset({url:"coming_soon"})
    }
}
export {MovieModel};

pages/index/index.js

const app = getApp();
import {MovieModel} from "../../model/movie";
const movieModel = new MovieModel();
Page({onLoad(){// movieModel.getInTheaters().then(res=>{//   console.log(res)
    // })
    const inTheaters = movieModel.getInTheaters()
    const top250 = movieModel.getTop250();
    const comingSoon = movieModel.getComingSoon();
    Promise.all([inTheaters,top250,comingSoon]).then(res=>{let[inTheaters,top250,comingSoon] = res;
      console.log(inTheaters)
    })
  }
})

若本号内容有做得不到位的地方(比如:涉及版权或其他问题),请及时联系我们进行整改即可,会在第一时间进行处理。


请点赞!因为你们的赞同 / 鼓励是我写作的最大动力!

欢迎关注达叔小生的简书!

这是一个有质量,有态度的博客

正文完
 0