我正在尝试在变量newID中设置ID的值。
为了“填充”变量,我正在读取一个模型,如下所示:

press: function() {
    var newID = 0;
    oModel.read("/Delivery", null, null, true, function(oData) {
        newID = oData.results[oData.results.length - 1].ID;
        console.log(newID);

    }
    console.log(newID);
}


第一个console.log给我想要的值,但是第二个console.log给我0(第一个条件集)。我已经尝试使用增量运算符+ =并使用this.newID,但是一切都是徒劳的。

这确实是一个愚蠢的问题,可能是我在控制台上调用newID或在函数内部递增它的方式。

提前致谢。

最佳答案

这本来应该是评论,但它是如此之大,因此请以评论为例:

oModel.read函数可能是异步的,因此当您基本上执行代码时,会发生以下情况:

1)您将变量声明为0。

2)执行读取功能。

3)您执行console.log(var)=>此打印0。(因为读取尚未完成,并且此时仍为0)。

4)读取函数完成后,将所需的值分配给var并执行console.log(var)=>这将打印所需的值。

如果是这种情况,您可以实现以下内容:

var press = function() {
    var newId = 0;
    function callback() {
       console.log(newId);
    }
    oModel.read("/Delivery", null, null, true, function(oData) {
        newID = oData.results[oData.results.length - 1].ID;
        console.log(newID);
        callback();
   }
}

10-08 03:32