我在使用fetch理解变量和函数时遇到了一些问题。 我试图传递来自
的响应值.then(response => response.json())
到
.then(lang => response['lang'].slice(-2)
但是我收到了未定义的变量响应错误,所以我没有正确引用变量。调用它的正确方法是什么?
另外我想调用两个控制台日志,下面的代码片段当前会这样做,但我认为我不应该覆盖响应函数,我可以自己调用没有参数的函数或命令吗?
.then(response => console.log(response['text']) & console.log(food))
console.log(response ['text'])& console.log(食物)
fetch("https://localhost:8000", {method:"POST", body:fd})
.then(response => response.json())
.then(lang => response['lang'].slice(-2))
.then(food => "Temporary")
.then(function detectType(lang) {
switch(lang) {
case 'abc':
food = "Bananas";
break;
case 'def':
food = "Apples";
break;
default:
food = "Bananas";
break;
}})
.then(response => console.log(response['text']) & console.log(food))
.catch(err => console.error(err));
}
答案 0 :(得分:2)
如果我理解你想做什么,请记住一个函数的返回值是下一个函数接收的状态。所以你想要做更像这样的事情:
fetch("https://localhost:8000", {method:"POST", body:fd})
.then(response => response.json())
.then(response => {
response['lang'] = response['lang'].slice(-2);
return response;
})
.then(response => {
response['food'] = "Temporary";
return response;
})
.then(function detectType(response) {
switch(response['lang']) {
case 'abc':
response['food'] = "Bananas";
break;
case 'def':
response['food'] = "Apples";
break;
default:
response['food'] = "Bananas";
break;
}
return response;
})
.then(response => {
console.log(response['text']);
console.log(response['food']);
})
.catch(err => console.error(err));
}
答案 1 :(得分:2)
关于fetch()
,请记住它非常“承诺沉重”。
fetch("https://localhost:8000", {method:"POST", body:fd})
会返回一个Promise,您可以使用第一个then()
then(response => response.json())
返回response.json()
会在下一个response.json()
中显示.then()
状态。因此,您可以通过下一个then()
访问响应的JSON表示。
让我们来看看它应该是什么样子:
fetch("https://localhost:8000", {method:"POST", body:fd})
.then(response => response.json())
.then(jsonResp => jsonResp['lang'] );
通过最后一行,您可以检查JSON对象及其键,而无需关闭Promise链。如果您想查看lang
属性,则可以按照示例中的方式访问该属性。
希望这有帮助!