[Javascript学习101]:Promise.then里继续使用异步
来源:互联网 发布:python write 换行 编辑:程序博客网 时间:2024/05/19 08:44
Promise是现在用于写异步很好的方式,所有能用promise的地方就一定用,不然你的代码就会嵌套的越来越深。但是我们也会遇到promise的then里面还会是一个异步函数。这个时候就的注意了。
doSomeAsyncOperation(param, function(err, result) { if (err) { return handleError(err); } return anotherAsync(result, function(err, something) { if (err) { return handleSpecificError(err); } var nextArg = syncOp(something); return anotherCallbackedOperation(nextArg, function(err, whatever) { if (err) { return handleError(err); } return youCanSeeWhereItIsGoing(whatever, function(err, yeah) { if (err) { return handleError(err); } return toBeautifulChristmasTree(yeah, function(err, bummer) { if (err) { return handleError(err); } return soHardToReadAndThisHasOnlyLinearFlow(bummer); }); }); }); });});
可以改成这样的
doSomeAsyncOperation(param) .then(anotherAsync) .then(function(something) { return anotherPromisifiedOperation(syncOp(something)); }) .then(nowYouCanSee) .then(thatThisIsMuchEasierToRead) .then(andFollow) .then(especiallyWhenYouDefineAllStepsAsSeparateFunctions) .then(thereIsNoChristmasTreeAtTheEnd) .catch(specificError, alsoErrorsAreEasierToHandle) .catch(asYouCanHandleThemAlsoInGenericWay);
下面这个是实际项目中的例子:
function getHwUnitName() { return onlineImTree.getImTree() .then(imTree => { return nodeFinder.getActiveBtsLNode(imTree) .then(activeBtsLNode => ({imTree, activeBtsLNode})); }) .then(getHwUnitNameFromBpfByProductCode); }
阅读全文
0 0
- [Javascript学习101]:Promise.then里继续使用异步
- 使用 promise.then + 递归的方法异步转同步
- javascript angularjs 使用promise 异步获取数据
- 异步JavaScript与Promise
- JavaScript异步之Promise
- Promise学习--继续更新
- JavaScript异步控制 ---- Promise的一个简单使用场景
- JavaScript异步编程-Promise模式
- javascript异步下载 Promise实现
- 谈谈JavaScript异步操作Promise
- 使用Promise解决多层异步调用的简单学习
- JavaScript Promise使用
- JavaScript Promise 使用
- promise then catch
- JavaScript异步编程的Promise模式
- 【windows8开发】异步编程之Promise(Javascript)
- 【windows8开发】异步编程之Promise(Javascript)
- JavaScript异步编程的Promise模式
- ORA-01830: 日期格式图片在转换整个输入字符串之前结
- stl中的accumulate算法
- windows安装配置mysql
- js测试网页加载完所需时间
- Zemax设置评价函数
- [Javascript学习101]:Promise.then里继续使用异步
- iOS 调用设备震动
- windows 10中的ubuntu子系统安装桌面环境的方法(How to install Ubuntu-desktop in windows 10 Subsystem for Linux)
- node 异步/同步文件删除
- java 常见问题总结
- Synchronized 关键字的使用
- Oracle中的硬解析和软解析
- C#之使用NotifyIcon实现任务栏托盘菜单,图标闪烁效果及气泡提示 很多程序是只需要后台运行的,甚至不需要自己的应用界面。NotifyIcon提供了程序在任务栏的显示功能 程序下载链接如下
- 最全的 SqlHelper 类