@alicloud/fetcher-jsonp
TypeScript icon, indicating that this package has built-in type declarations

1.5.9 • Public • Published

@alicloud/fetcher-jsonp

@alicloud/fetcher 的底层 Promise 比较「纯」的 jsonp 实现,可以单独使用,返回为封装过的 JsonResponse 而非直接的数据。

何以「纯」?

url 需要使用者来拼接参数(跟原生的 fetch 类似)。

INSTALL

tnpm i @alicloud/fetcher-jsonp -S

APIs

import jsonp, {
  EJsonpError,
  JsonpOptions
} from '@alicloud/fetcher-jsonp';

jsonp(url, {
  timeout, // 超时毫秒数,默认 5 秒(一般来说 JSONP 请求要求必须有超时时间)
  charset,
  jsonpCallback,
  jsonpCallbackFunction,
  signal // 和 fetch 一致
});

如何 abort

参考 https://javascript.info/fetch-abort https://developer.mozilla.org/en-US/docs/Web/API/AbortController

import jsonp from '@alicloud/fetcher-jsonp';

function getAbortSignal(): AbortSignal | undefined {
  if (!window.AbortController) { // IE 下都不支持,请 if 保护
    return;
  }
  
  const abortController = new AbortController();
  
  setTimeout(() => { // 这里是模拟的,实际场景中不会用 setTimeout
    abortController.abort(); // 只有第一次调用有效
  }, 200);
  
  return abortController.signal;
}

return jsonp(jsonpUrl, {
  signal: getAbortSignal(),
  timeout
}).then(response => response.json());

请求被 Abort 只是形式上的 Abort,就像 timeout 一样,请求最终还是会继续(即使 DOM script 已经被移除)。 Abort 后得到的错误和原生的 AbortError 类似,其 name 属性为 AbortError

Readme

Keywords

Package Sidebar

Install

npm i @alicloud/fetcher-jsonp

Weekly Downloads

12

Version

1.5.9

License

MIT

Unpacked Size

16.6 kB

Total Files

25

Last publish

Collaborators

  • jacksontian
  • fengmk2
  • pagecao
  • aliyunsdkteam
  • console-fe