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 | export function jsonp(url) { return new Promise((resolve, reject) => { // 创建一个唯一的回调函数名 const uniqueCallbackName = `jsonp_callback_${Date.now()}_${Math.random().toString(36).substring(2)}`; // 创建一个 script 标签 const script = document.createElement('script'); script.src = `${url}?callback=${uniqueCallbackName}`; // 定义全局回调函数 window[uniqueCallbackName] = function(data) { resolve(data); // 清除全局回调函数和 script 标签 delete window[uniqueCallbackName]; document.body.removeChild(script); }; // 处理错误情况 script.onerror = function() { reject(new Error('JSONP request failed')); delete window[uniqueCallbackName]; document.body.removeChild(script); }; // 将 script 标签添加到文档中 document.body.appendChild(script); }); } |