Promise 并行

Promise.all是所有的Promise执行完毕后(reject|resolve)返回一个Promise对象。

最近在开发一个项目中,需要等接口拿到全部数据后刷新页面,取消loding效果

  // 项目中请求接口
function getShowProject(resolve, reject) {
$.ajax({
url: `${api}/rrz/member/showProjectById`,
type: 'get',
data: { appId: appId },
success: function (res) {
if (res.result == 'success') {
gather['listBy'] = res.data;
resolve();
}
}
});
}
function getProjectPic(resolve, reject) {
...
}
function projectRelation(resolve, reject) {
...
}
function queryProjectDynamicS(resolve, reject) {
...
}
function showProjectLoveValue(resolve, reject) {
...
}
function getAppProjectDonorComment(resolve, reject) {
...
}
// 等待接口全部请求完成后 刷新页面
var a1 = new Promise(getShowProject);
var a2 = new Promise(getProjectPic);
var a3 = new Promise(projectRelation);
var a4 = new Promise(queryProjectDynamicS);
var a5 = new Promise(showProjectLoveValue);
var a6 = new Promise(getAppProjectDonorComment);
Promise.all([a1, a2, a2, a3, a4, a5, a6]).then(function () {
info = { data: gather }
getDetail();
console.log('loading效果图消失');
})

Promise 串行

在项目的实际操作中会用到串行调用方法的情况,实现异步执行,例如
有三个方法,方法一、方法二、方法三,需要执行完方法一之后执行方法二,执行完方法二之后执行方法三,可以用Promise实现,简单的模拟做法如下:

function one(){
console.log(11111);
} function two(){
console.log(22222);
} function three(){
console.log(33333);
}
function fiveP(func){
return new Promise(function(resolve, reject) {
func();
resolve();
});
} p.then(fiveP(one))
.then(fiveP(three))
.then(fiveP(two))
.then(function(result) {
console.log('最后执行' + result);
});
// 执行结果
//
//
//
// 最后执行

最新文章

  1. SVN 错误
  2. 使用List的addAll()方法请判空指针
  3. Linux 关闭防火墙命令
  4. linux 不能用clock 计算sleep的时间
  5. implement "slam_karto" package on a Freight robot
  6. append appendChild appendTo区别
  7. java Process的waitFor()
  8. jquery文字上下滚动的实现方法
  9. elfinder-2.x的java servlet后端——elfinder-2.x-servlet
  10. asp.net BulletedList绑定数据及vs2013添加数据库文件
  11. Boost中timer的简易用法
  12. 使用Lucene.net+盘古分词实现搜索查询
  13. FORTH 安装使用
  14. 使用vs2010 opencv2.4.4编译release版本程序
  15. element-ui bug及解决方案
  16. 高并发秒杀系统--SpringMVC整合
  17. 完成将 toChineseNum, 可以将数字转换成中文大写的表示,处理到万级别,例如 toChineseNum(12345),返回 一万二千三百四十五
  18. tcp滑动窗口详解(2)
  19. 响应式布局css样式
  20. 【mysql】一条慢查询sql的的分析

热门文章

  1. Java多线程编程核心技术-第5章-定时器 Timer-读书笔记
  2. css ie bug 双边距
  3. 前端js判空处理,js字符串判空,js数组判空
  4. TypeScript 解构和展开
  5. SDOI2010选做
  6. zzulioj - 2624: 小H的奇怪加法
  7. ESP8266 LUA脚本语言开发: 准备工作-硬件说明
  8. [RN] React Native 好用的时间线 组件
  9. Java代理(静态代理、JDK动态代理、CGLIB动态代理)
  10. sql语句之union与join的区别