理解链式 Promise 中未定义的值
在 JavaScript 中,Promise 用于异步操作。它们提供了一种处理计算结果和处理成功和失败等场景的方法。然而,有时我们在链接 Promises 时会遇到意外的 undefined 值。
根本原因:无返回值的链接
Promises 是使用 .then() 方法链接的。当 Promise 被解决或拒绝时,.then() 方法返回一个新的 Promise 对象。但是,如果 .then() 方法没有显式返回任何值或 Promise,则新的 Promise 对象将被解析,默认值为未定义。
示例:
<code class="javascript">doStuff(9) .then(function(result) { // No value or Promise returned if (result > 100) { console.log(result + " is greater than 100"); } else { console.log(result + " is not greater than 100"); } }) .then(function(data) { console.log(data); // Output: undefined });</code>
在此示例中,第一个 .then() 方法不返回任何值。结果,第二个 .then() 方法接收 undefined 作为其参数,然后将其打印到控制台。
解决方案:返回值或 Promise
为了避免链式 Promise 中出现未定义的值,必须从 .then() 方法显式返回值或返回值的 Promise。
示例:
<code class="javascript">doStuff(9) .then(function(result) { if (result > 100) { console.log(result + " is greater than 100"); } else { console.log(result + " is not greater than 100"); } // Return the result to avoid undefined at the next .then() return result; }) .then(function(data) { console.log("data is: " + data); // Output: "data is: 90" });</code>
通过返回结果,第二个 .then() 方法接收到实际的结果值,而不是未定义的。
以上是为什么 Promise 链没有返回值会导致未定义的值?的详细内容。更多信息请关注PHP中文网其他相关文章!