我目前正在使用XMLHttpRequest(),因此我有一个异步函数。我希望能够在XMLHttpRequest完成后运行一些代码。我的代码到目前为止:
var method = function() {
this.func = function(param) {
_xmlrequestfunc(param, function(r) {
// return something
}
}
}
我希望能够使用此功能的内容如下:
method.func('POST').Then(
// Do something when method.func() is finished
)
我想在干净的JavaScript中做到这一点......这是否可行,如果是这样,任何人都可以解释它是如何完成的?提前谢谢!
答案 0 :(得分:1)
只需传递函数作为回调...
this.func = function(param, callback) {
_xmlrequestfunc(param, function(r) {
if(callback) callback();
// return something
}
}
.....
this.func({yourprams}, responseFunc);
function responseFunc() {
//I am being called after the successful completion of XMLRequest.
}
答案 1 :(得分:1)
如果你想在干净的JS中使用它,你可以从func()
返回这个自制的承诺:
var promise = {
resolve: function (data) {
this.callback(data);
},
Then: function (callback) {
this.callback = callback;
}
};
_xmlrequestfunc(param, function(r) {
promise.resolve(42);
});
return promise;
这样您可以根据需要使用返回值:
method.func('POST').Then(function (theAnswer) {});