本文主要说一下Promise,Prepending(进行时),Resolve(成功了),Reject(失败了),then在小程序中的实际应用

关于promise的介绍什么的就不说了网上一搜一大堆,这里只说他的实际应用的代码

var promise = new Promise(function(resolve, reject) {
// ... some code
if (/* 异步操作成功 */){
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的状态是不会变的就是reject
resolve("调用成功");
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的状态是不会变的就是reject
resolve("调用成功");
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内部产生的错误

参考 : https://www.cnblogs.com/fps2tao/p/10141187.html

转: https://www.jianshu.com/p/acbc8986903a

es6Promise及小程序Promise用法的更多相关文章

  1. 小程序Promise不支持finally解决方案

    小程序Promise不支持finally解决方案 代码片段 点击链接即可在微信开发者工具中查看代码wechatide://minicode/t2eidemj7P3X git地址 基本思路 小程序的Pr ...

  2. 微信小程序 - promise(get\post)

    部分源码来自于http://www.wxapp-union.com/home.php?mod=space&uid=17761,就是小程序社区 , 参考以及借鉴一些类似cnblog,csdn上的 ...

  3. 微信小程序Promise对象

    Promise 对象 Promise 的含义 基本用法 Promise.prototype.then() Promise.prototype.catch() Promise.prototype.fin ...

  4. 小程序-promise封装小程序的请求方法

    // 在utils-->base.js中,封装一个Base类,有一个axios方法 class Base{ constructor(){ } axios(method,url,data){ co ...

  5. 小程序Promise

    /** 异步函数回调简化处理 const promisify = require('./promisify') const getSystemInfo = promisify(wx.getSystem ...

  6. 小程序websocket用法

    // socket已经连接成功 var socketOpen = false // socket已经调用关闭function var socketClose = false // socket发送的消 ...

  7. 微信小程序 weui 使用方法

      https://github.com/Tencent/weui-wxss/ 下载地址用于小程序的https://github.com/Tencent/weui   下载地址用于H5    运用示例 ...

  8. [组件封装]微信小程序-图片批量上传照片墙

    描述 批量上传图片, 可设置最大上传个数, 可删除, 可设置默认值. 效果 源码 pictures-wall.wxml <view class="picturesWall"& ...

  9. 在微信小程序的JS脚本中使用Promise来优化函数处理

    在我们传统的Javascript开发函数编写中,我们习惯了回调函数的处理,不过随着回调函数的增多,以及异步处理的复杂性等原因,代码越来越难读,因此诞生了使用Promise来优化JS函数处理的需求,引入 ...

随机推荐

  1. 转:nginx基础概念(keepalive、pipe)

    keapalive 当然,在nginx中,对于http1.0与http1.1也是支持长连接的.什么是长连接呢?我们知道,http请求是基于TCP协议之上的,那么,当客户端在发起请求前,需要先与服务端建 ...

  2. 使用Flask+MongoDB实现基于REST的接口简单操作

    目录 前言 1 准备工作 2 具体实现 前言 最近在捣鼓如何使用阿里云服务器搭建一个简单的基于Flask框架的后端接口,刚开始为了图方便,就直接买了一个Windows Server 2008系统服务器 ...

  3. 算法笔记_202:第三届蓝桥杯软件类决赛真题(Java高职)

    目录 1 填算式 2 提取子串 3 机器人行走 4 地址格式转换 5 排日程   前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 填算式 [结果填空] (满分11分) 看这个算式: ☆☆☆ + ☆☆ ...

  4. SpringBoot2中配置文件的调整,升级SpringBoot2时候注意的坑

    原来使用SpringBoot1.5最近写个demo后发现原来的配置文件不能用了. 最后上网查询了一下资料,springboot2.0和spring1.x还是存在不少问题的. 1.问题一:Java版本要 ...

  5. 软件工程各阶段的UML图

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6616876.html UML是统一建模语言,主要用于软件的分析与设计阶段.但是UML有这么多图,具体怎么用呢? ...

  6. POJ 2003 Hire and Fire (多重链表 树结构 好题)

    Hire and Fire Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 2316   Accepted: 655 Desc ...

  7. 〖Android〗存在多个Android设备时,使用Shell脚本选择一个Android设备

    Shell脚本: #!/bin/bash devices=( $(adb devices|grep device$|awk '{print $1}'|xargs echo) ) case ${#dev ...

  8. 一起talk C栗子吧(第八十五回:C语言实例--使用信号进行进程间通信二)

    各位看官们,大家好,上一回中咱们说的是使用信号进行进程间通信的样例,这一回咱们接着上一回的内容,继续说该样例.闲话休提.言归正转. 让我们一起talk C栗子吧. 我们在上一回中举了使用信号进行进程间 ...

  9. 八叉树(Octree)

    八叉树(Octree)是一种用于描述三维空间的树状数据结构.想象一个立方体,我们最少可以切成多少个相同等分的小立方体?答案就是8个.再想象我们有一个房间,房间里某个角落藏着一枚金币,我们想很快的把金币 ...

  10. iOS 常用的几个math函数

    1.取整数 double ceil (double); 取上整 double floor (double); 取下整 2.绝对值 double fabs (double);求绝对值 double ca ...