我有一个从原型函数内部调用的 getJSONP 函数。我将一个 JSON 对象传递给该函数并更改其中的值,我希望能够在它准备好后使用更新的对象,但我似乎无法返回该对象,只能从回调中调用不同的函数并使用它那里。
我想我理解 Promise 的概念,但我怎样才能将我的函数更改为 Promise 并在它准备好时使用它?
这是 getJSONP 函数:
function getJSONP(url, success) {
var ud = '_' + +new Date,
script = document.createElement('script'),
head = document.getElementsByTagName('head')[0] || document.documentElement;
window[ud] = function(data) {
head.removeChild(script);
success && success(data);
};
url += '?callback=' + ud;
script.src = url;
head.appendChild(script);
};
这就是我使用它的方式:
MyClass.prototype.mySpecialFunction = function(myObject) {
getJSONP(myURL,function(data) {
//doing alot of stuff
...
//myObject.myArr = code the pushes a lot of stuff into an array
workWithTheNewArray(myObject) // where i work with the full array
});
});
请考虑到我没有使用 jQuery(因为性能和大小),但我使用的是jqlite。