javascript - 如何在 Dojo for JavaScript 中使用 request.get().then 返回值?

标签 javascript dojo

我认为至少一个问题是,当函数仍在运行时,其余代码正在处理。这是一些详细的代码来显示问题。第一个 block 位于 HTML 文件中并使用 load.js。

require(["load.js"], function(loader) {
    var load = new loader("fileLoad", "myID");
    var theString = load.loadFromDB();
    alert(theString);
});

使用此代码,变量“theString”在调用警报之前不会收到返回值。

这是来自 load.js 的代码:

define(["dojo/_base/declare", "dojo/request/xhr", "dojo/request"]
        , function(declare, xhr, request) {            

    return declare(null, {
        constructor: function(/*string*/ action, /*string*/ id) {
            this.action = action;
            this.id = id;
        },
        loadFromDB: function() {
            request.get("../../author-load-save.php", {
                query: {
                    action: this.action,
                    id: this.id
                }
            }).then(function(text) {
                console.log("The server returned: \n", text);                
                return text;                
            });
        }
    });
});

最佳答案

cannot return it ,它是异步的。但是,您可以返回您已经在使用的 promise :

require(["load.js"], function(loader) {
    var load = new loader("fileLoad", "myID");
    load.loadFromDB().then(alert); // alert is a function that takes theString
});

define(["dojo/_base/declare", "dojo/request/xhr", "dojo/request"]
        , function(declare, xhr, request) {            

    return declare(null, {
        constructor: function(/*string*/ action, /*string*/ id) {
            this.action = action;
            this.id = id;
        },
        loadFromDB: function() {
            return request.get("../../author-load-save.php", {
//          ^^^^^^^
                query: {
                    action: this.action,
                    id: this.id
                }
            }).then(function(text) {
                console.log("The server returned: \n", text);                
                return text; 
            }); // makes a promise for the text
        }
    });
});

关于javascript - 如何在 Dojo for JavaScript 中使用 request.get().then 返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20982900/

相关文章:

jquery - 开发时同时使用Dojo、extJS和Jquery有什么缺点?

JavaScript 闭包和作用域 : How to pass an outer scope variable to a callback function which is passed as an argument?

javascript - onclick 不适用于按钮

javascript - ReactDOM.render 预期最后一个可选的 `callback` 参数是一个函数

ajax - Grails/Dojo进度栏从 Controller /服务获取进度

javascript - 道场宣告正确方式

javascript - 如何在 dojo.grid.DataGrid 中创建具有不同小部件的列?

javascript - 如何用javascript检查给定的html表有多少列?

javascript - mustache js输出 mustache js代码

dojo - 在 Dojo JSONP 请求之后,响应存储在哪里?