本文主要说一下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. python2x与3x下使用urlretrieve下载文件

    1.python2x下urlretrieve方法: 直接将远程数据下载到本地. urllib.urlretrieve(url[, filename[, reporthook[, data]]]) 参数 ...

  2. C#中e.Cancel,e.Handled的区别与应用

    首先并不是每个事件的e参数都有上述两个属性. e.Cancel:获取或设置指示是否应取消事件的值:e.Handled:获取或设置一个值,该值指示是否处理过此事件. 下面说说比较常见的场景: 1)e.c ...

  3. C# •MouseDown •MouseDown •MouseUp 的先后顺序

    鼠标按下事件发生的顺序 MouseDown event. Click event. MouseDownevent. MouseUp event. 可以写个测试,放一个picture控件 private ...

  4. JSP页面跳转之sendRedirect()与forward()辨析

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6044817.html  在JSP中,要实现页面的跳转,主要有两种方式实现:forward和sendRedire ...

  5. cocos2d-js 3.0 RC0 监听返回键、菜单键、进入后台(home键)、恢复显示等事件

    cc.eventManager.addListener({ event: cc.EventListener.KEYBOARD, onKeyReleased: function(keyCode, eve ...

  6. 对2个hex(16进制)字符串进行异或操作

    private static String hexXOR(String hex1, String hex2){ BigInteger i1 = new BigInteger(hex1, 16); Bi ...

  7. mysql查询高级用法

    联合查询 select a.* , b.adress , b.name from a , b where a.sbNo = b.cdid order by a.sbNo , a.STime selec ...

  8. 怎么查看mysql的数据库编码格式

    一.查看MySQL数据库服务器和数据库MySQL字符集. show variables like "%char%" 二.查看MySQL数据表(table)的MySQL字符集. sh ...

  9. DUBBO本地搭建及小案例 (转)

    DUBBO的介绍部分我这里就不介绍了,大家可参考官方文档. DUBBO的注册中心安装 DUBBO的注册中心支持好几种,公司用到zookeeper注册中心,所以我这边只说明zookeeper注册中心如何 ...

  10. 利用Git进行团队协作

    前言: 这里简单介绍一下Git的历史. 同生活中的许多伟大事件一样,Git 诞生于一个极富纷争大举创新的年代.Linux 内核开源项目有着为数众广的参与者.绝大多数的 Linux 内核维护工作都花在了 ...