首页 > 代码库 > JS备忘
JS备忘
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将其当做参数传递给第三个操作。
JS备忘
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。