javascript - Dojo 使用 xhrGet 从服务器获取数据并存储在变量中

标签 javascript dojo

我有以下功能:

loadMsgBody: function (id) {
    return dojo.xhrGet({
        url: "myurl",
        handleAs: "text",
        content: {
            id: id
        },
        load: function (response) {
            return response;
        },
        error: function (response) {
            alert(response);
        }
    });
}

并调用它:

var text = "";
this.loadMsgBody(this.msgId).then(function (response) {
    text = response;
});

现在我希望获得函数的返回值,但我得到的是文本的空值。但是,在 Firebug 中,我确实看到服务器的响应具有正确的值。我搜索并找到了这些链接:DOJO xhrGet how to use returned json object? 和: Using hitch / deferred with an xhrGet request 但我仍然无法用上面的代码获取和存储数据。我不想在 xhrGet 调用中进行操作,我想检索数据并使用,因为它将被多次使用。

我有什么遗漏的吗?

最佳答案

Dojo 的 XHR 方法返回类 dojo/Deferred 的实例,因为它们是异步的。这意味着函数在响应值可用之前返回。为了使用异步响应的结果,您需要等待它返回。 Dojo 使用统一的 API Deferreds 公开了这一点。 dojo/Deferred 类的实例有一个方法thenthen 方法采用函数作为参数。一旦延迟问题得到解决(在本例中,当请求完成时),该函数就会执行。

var deferred = loadMsgBody();
deferred.then(function(response){
  //work with response
});

关于javascript - Dojo 使用 xhrGet 从服务器获取数据并存储在变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19116834/

相关文章:

javascript - 使用 Dojo 的第二个选择值来过滤选择中的选项

JavaScript Promise 架构 : Squelch an error

javascript - 如何使用dojo动态创建下拉框的新选项

javascript - 跨度不会在 div 中更新

javascript - 幻灯片循环不工作

javascript - 如何在回发后保持对 asp 文本框或任何 html 元素的关注

javascript - 使用模板作为内容时,在 dijit.Dialog 中附加点

构建 dojo 时出现 css 语法错误

javascript - 在粘贴事件 Javascript 中删除输入字段中的所有非数字字符

javascript - 如何在 AngularJS 中获取毫秒时间