1. Promise用法

js异步调用较多,如果某个操作是基于上个异步结果才能执行的,再有一个操作又是基于此操作的,则需要嵌套多层代码,在ES6中引入了Promise写法,可以比较优雅的解决这个问题:

    <script type="text/javascript">
function runAsync1(para) {
var p = new Promise(function (resolve, reject) {
//做一些异步操作
setTimeout(function () {
console.log('异步任务1执行完成');
resolve(para + 1);
}, 1000);
});
return p;
}
function runAsync2(para) {
var p = new Promise(function (resolve, reject) {
//做一些异步操作
setTimeout(function () {
console.log('异步任务2执行完成');
resolve(para + 2);
}, 2000);
});
return p;
}
function runAsync3(para) {
var p = new Promise(function (resolve, reject) {
//做一些异步操作
setTimeout(function () {
console.log('异步任务3执行完成');
resolve(para + 3);
}, 2000);
});
return p;
} runAsync1(1)
.then(function (data1) {
console.log(data1);
return runAsync2(data1);
})
.then(function (data2) {
console.log(data2);
return runAsync3(data2);
})
.then(function (data3) {
console.log(data3);
}); </script>

输出的结果是:

异步任务1执行完成
2
异步任务2执行完成
4
异步任务3执行完成
7

只需要看最后几行就可以,第一个then接收runAsync1的返回值data1可以将其传递给第二个操作,第二个then接收runAsync2的返回值data2将其当做参数传递给第三个操作。

最新文章

  1. JavaScript标准参考教材(alpha)--笔记
  2. 【码在江湖】前端少侠的json故事(下):jsonp的应用
  3. android studio 注释模板
  4. u3d动态加入模型
  5. Mysql用户密码设置修改和权限分配
  6. 简要地写出一个.NET&#160;Remoting的示例
  7. 几款实用的 JavaScript 图形图表库
  8. 项目中oracle存储过程记录——经常使用语法备忘
  9. javaweb 在netbeans 上的部署问题
  10. Android 开发第二天
  11. 对bigDecimal的一些探索
  12. Spring的字符编码过滤器CharacterEncodingFilter
  13. c# .net core 下的网络请求
  14. java中的内存溢出和内存泄漏
  15. 为什么用CDN给你网站加速?
  16. 阿里 Goldeneye 四个环节落地智能监控:预测、检测、报警及定位
  17. web前端名人的博客微博Githu
  18. java.lang.RuntimeException: Unable to start activity ComponentInfo……AppCompat does not support the current theme features
  19. Cognos11中通过URL传参访问动态Report
  20. win7下配置IIS

热门文章

  1. 关于多线程之GCD的一些学习要点
  2. PLC300寻址指令
  3. SpringMVC Controller之间的重定向和转发
  4. 微信小程序登录逻辑
  5. 用 tensorflow实现DeepFM
  6. 万网域名查询API接口
  7. 一步步教你轻松学支持向量机SVM算法之理论篇1
  8. 【C++】解析C++运行环境的搭建
  9. 如何在IIS上发布网站 在阿里云服务器windows server2012r iis上部署.net网站
  10. 15.翻译系列:EF 6中的级联删除【EF 6 Code-First 系列】