gpt4 book ai didi

javascript - Promise 链如何断言哪个值来自哪个返回值?

转载 作者:行者123 更新时间:2023-12-03 00:02:30 24 4
gpt4 key购买 nike

我目前正在研究 Electron in Action。我正在学习 JavaScript,但谷歌上没有出现这个问题,所以我想我应该在这里问一下。假设我们有这样的代码:

newLinkForm.addEventListener('submit', (event) => {
event.preventDefault();
const url = newLinkUrl.value;
fetch(url)
.then(response => response.text())
.then(parseResponse)
.then(findTitle)
.then(title => storeLink(title, url))
.then(clearForm);
});

在链的第一个和第四个环中,我们为第零个和第三个函数的返回值命名。但如果有多个返回值怎么办?我们创建一个列表吗?我们可以在 Promise 链中调用两个函数吗:

then(returnvalue1=>funct1, returnvalue2=>funct2)

我们能做到吗?感谢您的回复。

最佳答案

promise 仅具有单个解析值,因此 .then() 处理程序仅传递单个参数。

如果您想解析具有多个值的 Promise,那么您通常会将它们 package 在数组或对象中,并且单个解析值将是数组或对象。

您可以使用解构来轻松引用对象或数组中包含的多个值。

示例:

Promise.resolve([1,2]).then(result => {
console.log(result); // logs [1,2]
return result; // pass the array on to the next step
}).then(([a, b]) => { // use destructuring to get the two items out of the array
console.log(a);
console.log(b);
});
<小时/>

你的建议是这样的:

.then(returnvalue1=>funct1, returnvalue2=>funct2)

是完全不同的东西。在这里,您将两个函数传递给 .then(),如 .then(f1, f2) (或者看起来像您正在尝试执行的操作)。当您将第二个函数传递给 .then() 时,第二个函数是拒绝处理程序(如 .catch() 处理程序),并且仅在 Promise 拒绝并且该参数将成为拒绝原因。

关于javascript - Promise 链如何断言哪个值来自哪个返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55111757/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com