在写小程序的时候,发现了可以用到Promise来进行更加方便的开发,在这里记录一下
      本文主要说一下Promise,Prepending(进行时),Resolve(成功了),Reject(失败了),then在小程序中的实际应用
关于promise的介绍什么的就不说了网上一搜一大堆,这里只说他的实际应用的代码

var promise = new Promise(function(resolve, reject) {// ... some codeif (/* 异步操作成功 */){resolve(value);} else {reject(error);}
});

上面给出的是promise的写法我们一般写的时候会在一个方法中去写,下面我就贴出他的实际应用的代码(需要往下传递参数的写法)

App({onLaunch: function () {this.xuexi();},xuexi:function(){this.test().then(jj =>{//这里是将test方法中resolve返回值赋值给下一个方法,//在这里可以对数据进行判断是否继续进行return this.runAsync1(jj);}).then(hh =>{//这里是将runAsync1方法中resolve返回值赋值给下一个方法return this.runAsync2(hh);}).then(mm =>{//这里是将runAsync2方法中resolve返回值赋值给下一个方法this.runAsync3(mm);})}test: function(){var p = new Promise(function (resolve, reject) {setTimeout(function () {//注意:一旦你把promise的状态定义了哪他的状态就不会再改变.//比如我这里先写的resolve下面又跟着写了reject,//reject的代码会执行但是promise的状态是不会变的就是rejectresolve("调用成功");reject("调用失败"); }, 5000);})return p;},runAsync1 :function(jj){var p = new Promise(function (resolve, reject) {//做一些异步操作setTimeout(function () {console.log(jj);resolve("测试的数据1");}, 3000);});return p;},runAsync2: function (hh) {var p = new Promise(function (resolve, reject) {//做一些异步操作setTimeout(function () {console.log(hh);resolve('随便什么数据2');}, 2000);});return p;},runAsync3: function (mm) {var p = new Promise(function (resolve, reject) {//做一些异步操作setTimeout(function () {console.log(mm);// resolve('随便什么数据6');}, 2000);});return p;},
})

不需要传递参数的写法就是等待一个完成了就进行下一个的写法

App({onLaunch: function () {this.xuexi();},xuexi:function(){//只是等待上一个完成后就进行下一个不关心上一个的状态,没有数据的交互this.test().then(this.runAsync1);.then(this.runAsync2);.then(this.runAsync3);}test: function(){var p = new Promise(function (resolve, reject) {setTimeout(function () {//注意:一旦你把promise的状态定义了哪他的状态就不会再改变.//比如我这里先写的resolve下面又跟着写了reject,reject的代码会执行但是promise的状态是不会变的就是rejectresolve("调用成功");reject("调用失败"); }, 5000);})return p;},runAsync1 :function(jj){var p = new Promise(function (resolve, reject) {//做一些异步操作setTimeout(function () {console.log(jj);resolve("测试的数据1");}, 3000);});return p;},runAsync2: function (hh) {var p = new Promise(function (resolve, reject) {//做一些异步操作setTimeout(function () {console.log(hh);resolve('随便什么数据2');}, 2000);});return p;},runAsync3: function (mm) {var p = new Promise(function (resolve, reject) {//做一些异步操作setTimeout(function () {console.log(mm);// resolve('随便什么数据6');}, 2000);});return p;},
})

建议一个promise后面跟随一个catch去捕捉promise内部产生的错误

小程序的Promise用法相关推荐

  1. 微信小程序使用Promise

    微信小程序使用Promise,其实只需要在API方法外层包一个promise就行了. 本文以微信登陆和获取用户信息接口为例. 封装代码:wechat.js /*** Promise化小程序接口*/ c ...

  2. 微信小程序引入promise报错

    微信小程序引入 promise 相关库及 Android 真机报错解决方案 如果你恰巧使用的是 bluebird ,又恰巧你只是在模拟器上测试或者你的真机是iOS系统,你有必看看到最后,因为在Andr ...

  3. 小程序 之 Promise

    一.export 与 exports的区别 1. module.exports和exports是属于 CommonJS 模块规范.CommonJS规范规定,每个模块内部,module变量代表当前模块. ...

  4. 小程序promise封装post请求_微信小程序用promise封装请求

    1.在根目录utils中新增request.js,(post也可以改成这种promise写法,post暂时用的回调写法)并写: var app = getApp(); //项目URL相同部分,减轻代码 ...

  5. 微信小程序Unhandled promise rejection TypeError

    在今天重新生成一个原来的小程序做修改时,命名修改重新导入微信开发者工具报错. VM21 WAService.js:1 Unhandled promise rejection 网上百度说 是版本与原来不 ...

  6. 微信小程序——API promise化,全局数据共享,MobX,将Stroe中的成员绑定到页面中,在页面上使用Strore中的成员

    一.API promise化 1.基于回调函数的异步 API 的缺点 默认情况下,小程序官方提供的异步 API 都是基于回调函数实现的,例如,网络请求的 API 需要按照如下的方式调用: 缺点:容易造 ...

  7. 微信小程序使用promise 一次封装全部接口

    /*** Promise化小程序接口*/ class Wechat {static api(name, opts) {return new Promise((success, fail) => ...

  8. 小程序 异步方法 promise

    微信小程序里面接受数据为promise使用for循环 异步方法报错 问题描述 在js里面调用后台接口的方法能够成功访问并且也能获取数据,但是打印的时候打出来是promise或者为undefined 问 ...

  9. 微信小程序 - Unhandled promise rejection TypeError: r.Canvas is not a constructor

    微信小程序开发在使用 Canvas 进行真机调试的时候报错: VM22:2 Unhandled promise rejection TypeError: r.Canvas is not a const ...

最新文章

  1. R语言绘制生存曲线图
  2. Windows下Go语言的安装和运行
  3. Java实现MD5加密和文件校验
  4. 关于jsp web项目,jsp页面与servlet数据不同步的解决办法(报错404、405等)即访问.jsp和访问web.xml中注册的/servlet/的区别
  5. windows下hadoop的单机伪分布式部署(3)
  6. 中功率继电器行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  7. hue安装使用,集成数据库
  8. 088、Docker 如何支持多种日志方案 (2019-05-10 周五)
  9. 万字干货,eBPF 中文入门指南
  10. nginx请求报499错误
  11. 每周一荐:《盗梦空间》《不能承受的生命之轻》
  12. 模态逻辑(2)—— 模态逻辑基本概念
  13. Camera.cullingMask 常用操作
  14. 仿照Windows的计算器,编写一个简易的计算器程序,实现加、减、乘、除等运算。
  15. ValueError: decision_function_shape must be either ‘ovr‘ or ‘ovo‘, got None.
  16. LeetCode695. 岛屿的最大面积———海岛
  17. 视神经面积统计 matlab,用MATLAB定量视网膜神经节细胞
  18. 【基于MatlabSDOF弹性反应谱批量生成程序】下载和使用说明
  19. Zemax | Zemax中导入CAD模型
  20. nc报销系统用的什么java_财务NC系统是什么?

热门文章

  1. 高德如何通过大数据能力赋能数字城市建设?|CCF-GAIR 2019
  2. Java注释代码也会执行之Unicode编码解码
  3. SPN与Kerberoast 攻击讲解
  4. 跟着鬼哥学so改动,一,准备篇
  5. AD那些事儿——阻焊层和助焊层的区别
  6. ACDSee.Pro.v6.0.Build.169.32.bit.incl.patch-iOTA
  7. 程序员必学电脑计算机专业英语词汇 06 (196 单词)
  8. iqooneo5支持nfc功能吗(支持nfc功能)
  9. 2020年度网络安全十大潜力技术及五大市场前瞻
  10. 网购图书java代码_基于JAVA WEB的网上书店的设计与实现