Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | 24x 1x 1x 1x 1x 1x 1x 1x 1x 1x | import { loadResource, LoadResourceUrlType } from './loadResource'
let i = 0
/**
* 发起 jsonp 请求。
*
* @param url 请求地址
* @param keyOfCallbackName 回调函数名的键
*/
export function jsonp<T>(
url: string,
keyOfCallbackName = 'callback',
): Promise<T> {
return new Promise<T>((resolve, reject) => {
const callbackName = `__vtils_jsonp_callbacks__${i++}`
;(window as any)[callbackName] = (result: T) => {
resolve(result)
delete (window as any)[callbackName]
}
const _url = new URL(url)
_url.searchParams.set(keyOfCallbackName, callbackName)
url = _url.toString()
loadResource({
path: url,
type: LoadResourceUrlType.js,
}).catch(reject)
})
}
|