Monaca.getDeviceId() не может установить переменную

Я пробовал несколько способов установки идентификатора устройства для переменной один раз, чтобы его можно было использовать в других функциях, не требуя обратного вызова monaca. Этот код не работает:

function getDevID(){
    monaca.getDeviceId(function(id){
        return id;
    });
}

И при этом это:

var devid = monaca.getDeviceId(function(id){return id;});

В общем, как я могу установить идентификатор устройства в переменную для повторного использования в моем приложении?

Обновление: основываясь на комментариях о возможных дубликатах асинхронных вызовов, я вернулся и проанализировал это и обнаружил, что это правильно. Хотя технически это не повторяющийся пост, в нем есть ответ об асинхронном рабочем процессе. Решение моей проблемы может быть решено следующим образом:

var devid = '';

document.addEventListener ("deviceready", onDeviceReady, false);
function onDeviceReady() {
   monaca.getDeviceId(function(id){
      devid = id;
   });           
} 

Затем я могу использовать Devid в любом месте после загрузки.

1 ответ

Решение

С помощью deviceready прослушиватель событий, как и вы, наверняка является лучшим подходом, просто не забудьте удалить прослушиватель событий, когда закончите. Тем не менее, если вы используете Onsen UI, вы также можете использовать ons.ready(), который ожидает инициализации DOM. Вероятно, через пару мс deviceready, но сэкономит вам некоторый код и будет иметь тот же результат.

Другие вопросы по тегам