Džu*_*ris 2 javascript es6-promise fetch-api
我正在尝试使用Fetch API。从示例看来,GET请求需要then以某种方式解析响应。
目前我正在这样做
fetch(url)
.then(response => response.json())
.then(response => {
console.log(response);
});
Run Code Online (Sandbox Code Playgroud)
但是,这首先then看起来像样板。我试图避免它,例如:
fetch(url)
.then(response => {
console.log(response.json());
});
Run Code Online (Sandbox Code Playgroud)
但是,这记录了我的Promise状态待定resolved。
我阅读了有关该主题的其他问题,并阅读了一些有关Promise的信息,但我不知道是否有可能将其组合为一个then(如果这样-怎么做?)。
例如,这里的两个答案指出:
不需要使用多个“ .then”
和
没有充分的理由拥有两个.then()处理程序,因为每个处理程序中的代码都可以组合成单个.then()处理程序
但是我无法让那个例子真正起作用-我仍然有一个承诺:)
相反,这里被接受的答案解释了.then实际上对结果做了一些事情(提取了promise的回报),但是如果我能以某种方式自己做到这一点(response.json().then()或者说response.json().getVal()或者是double语法),我就无法理解then。
这很简单:调度fetch()请求时,它返回包含响应的Promise。首先解决.then()。解决这个第一个诺言实际上是回报Response。
现在,这是棘手的部分:即读取响应的正文中的方法,无论是.json(),.text(),.blob().... 所有返回的承诺。这意味着您将需要解析第二个promise,以获得解析后的响应。
流程如下所示:
fetch()请求,并返回一个Promise类型Response.json()返回一个对象,.text()返回一个字符串,.blob()返回一个Blob)。| 归档时间: |
|
| 查看次数: |
550 次 |
| 最近记录: |