Необходимо выполнить cordoba.exec синхронно в phonegap - PullRequest
0 голосов
/ 27 сентября 2018

Я изменяю приложение в Ionic, и мне нужно создать функцию, которая возвращает оставшееся место на устройстве.Проблема в том, что cordoba.exec выполняется асинхронно и возвращает значение после того, как функция, которая его содержит, уже вернула значение.Как я могу заставить процесс ждать результата.

var getFreeSpace = function() {
    var value = -1;

    cordova.exec(function(result) {
        value = result;
        console.log("Free Disk Space: " + result);
    }, function(e) {
        console.log("Error getFreeDiskSpace: " + e.error);
    }, "File", "getFreeDiskSpace", []);

    return value;
}

console.log('getFreeSpace',getFreeSpace());

Это приставки, как это:

getFreeSpace -1
Free Disk Space: 500000

Спасибо

1 Ответ

0 голосов
/ 28 сентября 2018

Вы можете попробовать это.

var getFreeSpace = function() {
    var value = -1;

    cordova.exec(function(result) {
        value = result;
        console.log("Free Disk Space: " + result);
        setTimeout(getFreeSpace, 0)// this will call after you get the result only.You can set delay if u want.
    }, function(e) {
        console.log("Error getFreeDiskSpace: " + e.error);
    }, "File", "getFreeDiskSpace", []);

    return value;
}

console.log('getFreeSpace',getFreeSpace());
...