gpt4 book ai didi

javascript - 将延迟处理程序附加到函数外部的嵌套 AJAX 调用

转载 作者:行者123 更新时间:2023-12-02 21:57:25 24 4
gpt4 key购买 nike

我正在尝试创建一个名为 getApi 的 AJAX 方法扩展,它将自动将我的不记名 token 添加到请求 header 中。

我有一个名为 getToken() 的延迟函数,它从 sessionStorage 或端点(如果已过期)返回 token 。

我的扩展方法如下所示:

$.getApi = function (options) {
getToken()
.done(function (token) {
options.headers = {
Authorization: token
};

$.get(options);
});
};

我希望能够将一个 did() 处理程序附加到内部 get 请求,如下所示:

$.getApi({
url: "my endpoint" // Returns json
})
.done(function (data) {
// Do stuff with the json data
});

如何更改 getApi 扩展方法以便能够将处理程序附加到内部 get 请求?有没有更好的方法来实现我想要做的事情?

最佳答案

使用 Promise 接口(interface)(then)。另外返回 $.get() 这样你就可以扩展 promise 链:

$.getApi = function (options) {
return getToken().then(function (token) {
// ^^^^^^ ^^^^
options.headers = {
Authorization: token
};
return $.get(options);
// ^^^^^^
});
};

$.getApi({
url: "my endpoint"
}).then(function (data) {
// ^^^^
// ...etc
});

注意:没有充分的理由在 jQuery 对象上定义 getApi。我建议将其设为全局函数:getApi

关于javascript - 将延迟处理程序附加到函数外部的嵌套 AJAX 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59968731/

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