使用函数中的值更新全局变量;它存储在一个变量中

时间:2015-07-21 23:55:54

标签: javascript jquery arrays function global-variables

function event() {

    var hold = "";

    var oArgs = {
        page_size: String(pgsize)
    };

    var wow = EVDB.API.call("/events/search", oArgs, ow = function(oData) {

        hold = oData.events.event[0].description

        return console.log(hold);

    });

    $("#shower").append("<li>" + hold + "</li>");

}

我希望我的console.log能够保持身份识别淋浴的价值。它只是输出  目前未定义,我知道我可以简单地在'hold'中附加'ow'但我的意图是返回'hold'值并在不同于event()的外部函数中使用它。

1 个答案:

答案 0 :(得分:0)

在异步编程中,您可以可靠地使用异步操作结果的唯一位置是在提供该结果的回调内部。这是因为被调用的异步在将来被称为某个不确定的时间,同时其他代码继续运行。此外,您也无法从异步回调中返回值。

所以,你可以这样做:

function event() {
    var oArgs = {page_size: String(pgsize)};
    EVDB.API.call("/events/search", oArgs, function(oData)
        $("#shower").append("<li>" + oData.events.event[0].description + "</li>");
    });
}

我还删除了对this的所有引用,因为此函数中没有明确的对象创建,可以为this提供适当的上下文。