gpt4 book ai didi

javascript - 如果 fetch 中 boolean 为 false 如何跳过 next .then() ?

转载 作者:行者123 更新时间:2023-12-02 21:53:48 26 4
gpt4 key购买 nike

// foo.json
[]
// bar.json
[
{
"name": "bar",
"type": "whatever"
}
]
function getJSON(path) {
return fetch(`http://localhost:4000/admin/${path}`)
.then(response => response.json())
}
function getStart() {
getJSON('foo')
.then(data => {
if (data.length == 0) {
return getJSON('bar')
// Look at bar.json and access to next .then() method
}
console.log('Access Denied')
// skip the next .then() method and exit.
})
.then(data => {
console.log(data, 'another then path')
})
}

我添加了if第一个 .then() 内的声明给出不同的路径取决于 foo 的 data.length是否为 0。

问题是代码总是访问第二个 .then()无论 bool 值是什么 truefalse .

这是结果:

Access Denied index.js:31

undefined "another then path" index.js:34

我发现了类似的question像我一样,但他使用 promise ,不是fetch ,而且我不知道如何使用rejectfetch条款。

有什么技巧可以解决这个问题吗?

最佳答案

您可以使用 throw 在 Promise 中触发错误。代码示例:

const promise1 = new Promise(function(resolve, reject) {
throw 'Uh-oh!';
});

promise1.catch(function(error) {
console.error(error);
});
// expected output: Uh-oh!

对于您的代码:

function getStart() {
getJSON('foo')
.then(data => {
if (data.length === 0) {
return getJSON('bar')
// Look at bar.json and access to next .then() method
} else {
console.log('Access Denied');
throw new Error('Access Denied');
}
})
.then(data => {
console.log(data, 'another then path')
})
.catch(e => {
console.log('Error', e);
}
}

关于javascript - 如果 fetch 中 boolean 为 false 如何跳过 next .then() ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60058237/

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