最近,我阅读了post关于使用Promise
的最佳做法。文章将其称为副作用"当我们调用.then()
内的函数而不实际返回结果时。
somePromise().then(function () {
someOtherPromise();
}).then(function () {
// Gee, I hope someOtherPromise() has resolved!
// Spoiler alert: it hasn't.
});
一般来说,我理解为什么使用return
关键字除了调用该函数之外,这是一个很好的做法。但我仍然很好奇为什么我们使用短语"副作用"这里。
答案 0 :(得分:1)
可能是副作用,因为您实际上并未意识到promise的执行可以生成的结果。但它并不总是副作用。
如果函数调用(在这种情况下为someOtherPromise
)始终执行您希望它执行的方式,那么它不是副作用。但是,由于承诺可能会失败,您可能不知道它是否确实(因为您没有处理结果),那么可能>>。
通过副作用,人们可以理解次要的效果是预期的效果。如果您在不关心结果的情况下致电您的承诺,行为与您的预期不同,则会产生副作用。
因此,为了缓解可能的副作用,您可以:
如下图所示:
//1.
somePromise().then(function () {
return someOtherPromise();
}).then(function () {});
//2.
somePromise().then(function () {
someOtherPromise().then(...).catch(...);
}).then(function () {});