本文主要说一下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. 跟踪 Ring3 - Ring0 的运行流程

    理论知识 SYSENTER 指令是在 Inter Pentium(R) Ⅱ 处理器上作为"高速系统调用"功能的一部分被首次引用的. SYSENTER 指令进行过专门的优化,能够以最 ...

  2. 转:清理系统垃圾的BAT代码

    @echo off title @echo off color 2 echo. echo. echo 请不要关闭此窗口! echo. echo 开始清理垃圾文件,请稍等...... echo. ech ...

  3. dom4j 输出UTF-8 XML时中文乱码

    使用DOM4J的XMLWriter输出UTF-8编码的XML文件时,出现乱码 public static void writToXml(Document document) throws IOExce ...

  4. VS编译 x64版本zlib库

    编译的过程倒也不是很难.我把编译的源码和脚本及说明都放在gitee上了. 详细的可以见这里 https://gitee.com/solym/zlib-1.2.11.git 可以参考这些文章 win10 ...

  5. java第二节 基本数据类型

    class Lesson2 { public static void main(String[] args) { //----------------------------------- //@Da ...

  6. android手机导入.cer证书文件的方法

    访问很多https协议的网站需要安装证书,手机也可以导入cer文件,你知道么?本文将通过简单的两步告诉你手机安装cer文件的方法. 步骤一:请先将数字证书文件“******.cer”文件复制到SD卡的 ...

  7. window搭建python环境

    在window开发python代码,搭建python环境! 01.下载python-win https://www.python.org/downloads/windows/ http://ipyth ...

  8. Linux默认日志含义

    Linux系统日志: /var/log/secure∶ 记录登入系统存取资料的档案,例如 pop3, ssh, telnet, ftp 等都会记录在此档案中: /var/log/wtmp∶ 记录登入者 ...

  9. 转:Ogre源码剖析 - 场景管理之Octree

    由于本人的引擎ProjectGaia服务于08年创新杯的游戏项目 – 3D太空游戏,所以理所应当加入Octree(八叉树 – 已经周宁学长发帖介绍过)场景管理器.参考了无数Octree的代码,发现还是 ...

  10. Retrofit2完全教程

    本文注目录: Retrofit入门 Retrofit注解详解 Gson与Converter RxJava与CallAdapter 自定义Converter 自定义CallAdapter 其它说明 前言 ...