Javascript 如何使用fetchjsonp中止信号?fetchjsonp(url,{signal})?

Javascript 如何使用fetchjsonp中止信号?fetchjsonp(url,{signal})?,javascript,fetch-api,Javascript,Fetch Api,我需要jsonp,但fetch()api不提供jsonp选项。 所以我找到了fetchjsonp 但是,标准提取具有可选的abort.signal功能 abortController = new AbortController() signal = abortController.signal fetch( url, {signal}) 请参阅第页的获取信号api fetch jsonp似乎没有提供abort.signal选项 我怎样才能利用它呢 fetchjsonp( url, {si

我需要jsonp,但fetch()api不提供jsonp选项。 所以我找到了fetchjsonp

但是,标准提取具有可选的abort.signal功能

abortController = new AbortController()
signal = abortController.signal

fetch( url, {signal})
请参阅第页的获取信号api

fetch jsonp似乎没有提供abort.signal选项

我怎样才能利用它呢

 fetchjsonp( url, {signal})

JSONP是一个肮脏的、肮脏的黑客。它通过向页面中注入
元素来工作

您不能中止它,因为它不是为一个合适的HTTP API而设计的

自从CORS在2009年问世以来,任何web服务都没有理由使用它

如果可以,请修复web服务,使其支持JSON和CORS,而不是JSONP

否则,您可能需要构建自己的JSONP库。最接近于中止请求的方法是在事件发生后更改回调函数

所以你应该做一些如下的事情:

const id = generate_a_unique_id();
window[`callback_${id}`] = function(data) { /* do something with data */ };
const url = `http://example.com/jsonp?callback=callback_${id}`;
const script = document.createElement('script');
script.src = url;
document.body.appendChild(script);
然后要中止它:

window[`callback_${id}`] = function () { /* do nothing */ };