在干净的JavaScript中等待异步函数

在干净的JavaScript中等待异步函数,javascript,asynchronous,Javascript,Asynchronous,我目前正在使用XMLHttpRequest(),因此我有一个异步函数。我希望能够在XMLHttpRequest完成后运行一些代码。到目前为止,我的代码是: 我希望能够使用此函数执行以下操作: 我想用干净的JavaScript做这个。。。这可能吗?如果可能,有人能解释一下是如何做到的吗?提前谢谢 只需将函数作为回调传递 this.func = function(param, callback) { _xmlrequestfunc(param, function(r) {

我目前正在使用XMLHttpRequest(),因此我有一个异步函数。我希望能够在XMLHttpRequest完成后运行一些代码。到目前为止,我的代码是:

我希望能够使用此函数执行以下操作:


我想用干净的JavaScript做这个。。。这可能吗?如果可能,有人能解释一下是如何做到的吗?提前谢谢

只需将函数作为回调传递

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.
}

如果您想将其保存在干净的JS中,您可以从
func()
返回这个自制的承诺:

通过这种方式,您可以根据需要使用返回值:

method.func('POST').Then(function (theAnswer) {});
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.
}
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) {});