使用forge.prefs返回未定义的值

时间:2013-12-03 10:12:18

标签: ios5 preferences trigger.io

我尝试使用模块PREFS,但我不知道为什么它会返回一个未定义的值

function getId() {
    var id=0;

    forge.prefs.get("user_id", function(value){
        id=value;
        forge.logging.info("entry  id " +id);      
    });

    return id;  
};

输出:当我调用此方法时,它返回0!以及“entry id 37”的日志

我不知道为什么调用此方法后id的值不会改变。

1 个答案:

答案 0 :(得分:1)

我找到了Patrick Rudolph的解决方案   forge.prefs.get()可能是一个异步函数调用,这意味着它的回调执行有些延迟。在您的示例中,在触发两个回调之前执行load_my_car(),因此变量仍未定义。

你必须确保在调用load_my_car()之前触发了回调,试试这个:

forge.prefs.get('offset_val' function(offset1){
  forge.prefs.get('id', function(val){
    load_my_car(val,offset1);
  }); 
})

如果你真的不想有两个嵌套的forge.prefs.get(),你需要先检查哪个回调完成,然后在第二个完成后再调用load_my_car()。