javascript - 无法使用 fetch 解决承诺
问题描述
我无法使用 fetch 解决这个承诺 我想要 2 个值去 .then(data) 我想将状态用作墙作为我从后端获得的 JSON,然后继承传入状态但 resp.json 是总是显示 a 而我无法访问它的价值任何想法?
fetch('/signup', {
credentials: "same-origin",
mode: "same-origin",
method: 'POST',
headers: { "Content-Type": "application/json" },
body: JSON.stringify(inputJSON)
})
.then(resp => {
return [resp.json(), resp.status]
})
.then(function (data) {
console.log(data);
let Status = data[1]
let jsonData = data[0]
let p = jsonData.then(e => { return e })
console.log(p);
})
}
})
解决方案
返回 aPromise.all
以将两个值沿链传递:
fetch('/signup', {
credentials: "same-origin",
mode: "same-origin",
method: 'POST',
headers: { "Content-Type": "application/json" },
body: JSON.stringify(inputJSON)
})
.then(resp => {
return Promise.all([resp.json(), resp.status]);
})
或者,更好的是,使用async
/ await
,控制流会更清晰:
const resp = await fetch('/signup', {
credentials: "same-origin",
mode: "same-origin",
method: 'POST',
headers: { "Content-Type": "application/json" },
body: JSON.stringify(inputJSON)
});
const result = await resp.json();
// do stuff with result and with resp.status
确保在这两种情况下都捕获可能的错误。
推荐阅读
- angular - 通过在 @component Angular 中添加提供者来传递数据
- sql - 在两个日期查询之间访问 2016 年记录
- reactjs - Firestore 阵列
- c# - 无法比较数组中的两个元素:对象必须是字符串类型
- python-3.x - ModuleNotFoundError:没有名为“无”的模块
- android - 我在写数字时遇到问题,使用阿拉伯语时,它们的位置与文本不同
- sql - SQL TABLE 中的 INNER JOIN
- azureml - 我无法在 ML Azure 中恢复标记项目
- php - Php Xml 数据不循环遍历 foreach 循环中的元素
- nestjs - 如何在 Typeorm 中使用带有 typeorm-transactional-cls-hooked 的事务