javascript – 避免使用promises嵌套回调
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 避免使用promises嵌套回调,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2093字,纯文字阅读大概需要3分钟。
内容图文
我仍然是使用Promise API的新手,我正在努力避免如何避免深度嵌套的Promise链,据我所知,这是使用Promise的好处之一.使用以下伪代码作为示例,当后续的依赖于先前的上下文时,如何避免嵌套Promise?
function loadDependency1() {
// return a promsise to load the first dependency
}
function loadDependency2(dependency1) {
// return a promise to load the second dependency, which relies on the first dependency
}
function loadDependency3(dependency2) {
// return a promise to load the third dependency, which relies on the second dependency
}
function doWork(dependency1, dependency2, dependency3) {
// finally have all the things necessary to do work
}
// load all the dependencies and eventually doWork
loadDependency1().then(function(dependency1) {
return loadDependency2(dependency1).then(function(dependency2) {
return loadDependency3(dependency2).then(function(dependency3) {
doWork(dependency1, dependency2, dependency3);
});
});
});
解决方法:
当您从那时返回承诺时,它将在该承诺结算时解决:
所以,如果下一个只需要前一个:
loadDependency1().then(function(dependency1) {
return loadDependency2(dependency1);
}).then(function(dependency2) {
return loadDependency3(dependency2);
}).then(function(dependency3) {
doWork(dependency3);
});
如果您需要第三个依赖项,则有效.
如果依赖关系不依赖于彼此:
Promise.all([loadDependency1(),loadDependency2(),loadDependency3])
.spread(function(dep1,dep2,dep3){
doWork(dep1,dep2,dep3);
});
如果您希望在整个承诺链中保持“状态”并使用现代承诺库(如Bluebird),您可以执行以下操作:
loadDependency1().bind({}).then(function(dependency1) {
this.dep1 = dependency1;
return loadDependency2(dependency1);
}).then(function(dependency2) {
this.dep2 = dependency2;
return loadDependency3(dependency2);
}).then(function(dependency3) {
doWork(this.dep1, this.dep2, dependency3);
});
如果你不是(而你真的应该:))你可以.所有的方式:
loadDependency1().then(function(dependency1) {
return [loadDependency2(dependency1),dependency1];
}).spread(function(dependency2,dep1) {
return [loadDependency3(dependency2),dependency2,dep1];
}).spread(function(dependency3,dependency2,dependency1) {
doWork(dependency1, dependency2, dependency3);
});
内容总结
以上是互联网集市为您收集整理的javascript – 避免使用promises嵌套回调全部内容,希望文章能够帮你解决javascript – 避免使用promises嵌套回调所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。