gpt4 book ai didi

javascript - ajaxStart 和 ajaxStop 等同于 fetch API

转载 作者:数据小太阳 更新时间:2023-10-29 04:47:28 26 4
gpt4 key购买 nike

我正在尝试将我的 API 调用从使用 jQuery ajax 迁移到使用 Fetch API。

我使用 jQuery ajaxStart 和 ajaxStop 在服务器调用期间显示加载微调器。

我正在运行多个并行服务器请求,我希望微调器在第一个请求开始时启动,并在最后一个请求结束时停止。

使用 jQuery 非常简单。但是,我找不到使用 fetch API 的类似技术。有什么想法吗?

最佳答案

您可以使用 Promise 来通知何时 fetch 被调用并完成

var params = {
a: 1,
b: 2
};

var data = new FormData();
data.append("json", JSON.stringify(params));

var currentRequest = new Request("/echo/json/", {
method: "POST",
body: data
});

var start, complete;
var fetchStart = new Promise(function(_start) {
start = _start;
})

var fetchComplete = new Promise(function(_complete) {
complete = _complete;
});
// do stuff when `fetch` is called
fetchStart.then(function(startData) {
console.log(startData)
});
// do stuff when `fetch` completes
fetchComplete.then(function(completeData) {
console.log(completeData)
});

var request = fetch(currentRequest);

[request, start({
"fetchStarted": currentRequest
})].shift()
.then(function(res) {
if (res.ok) {
// resolve `fetchComplete` `Promise` when `fetch` completes
complete({
"fetchCompleted": res
})
};
return res.json();
})
.then(function(data) {
document.body.textContent = JSON.stringify(data)
})
.catch(function(err) {
// if error, pass error to `fetchComplete`
complete({
"fetchCompleted": res,
"error": err
});
});

jsfiddle https://jsfiddle.net/abbpbah4/18/


另见 Fetch: POST json data

关于javascript - ajaxStart 和 ajaxStop 等同于 fetch API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37202078/

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