javascript - 当父母被取消时,是否可以取消孩子承诺?
问题描述
我有这段代码(使用 Bluebird Promise):
const promise = loadSomething(id)
.then(something => {
loadParentOfSomething(something.parentId);
return something;
});
当我这样做时promise.cancel()
,getSomething
它被取消了,但getSomethingParent
不是。
有没有办法,当getSomething
Promise 被取消时,我也可以得到getSomethingParent
Promise 的取消?
两个加载函数都返回一个带有 HTTP 请求的可取消异步承诺,我想取消它们的原因是因为它们有时可能需要一段时间才能加载,例如当用户导航离开 (SPA) 时不再需要响应。
解决方案
我认为您实际上在寻找什么
const promise1 = loadSomething(id);
const promise2 = promise1.then(something => { return loadParentOfSomething(something.parentId); });
// ^^^^^^
promise2.catch(e => void "ignore"); // prevent unhandled rejections
然后你可以继续使用promise1
来访问结果,也可以调用promise2.cancel()
. promise1
即使在结算后也可以取消。
推荐阅读
- python - 如何在python中迭代条件检查?
- r - R在值的出现达到限制后从数据框中删除行
- c++ - Xcode - 移动 src 文件后丢失 .h 和 .cpp 文件数据
- javascript - 未正确填写特定框时如何更改其颜色
- css - 悬停样式 '&:hover:{ }' 不适用于反应组件中的按钮
- android - Android RSA 加密抛出 InvalidKeySpecException
- python - 返回列表中的最低点
- rubygems - 带有 netlify 的 Asciidoc hugo 站点
- javascript - 如何将本地 csv 文件加载到 JavaScript 数组中
- r - 尝试运行标准偏差函数时出错