Метод startPowerUpdates будет вызывать функцию, которую вы ему передаете, но кажется, что startPowerUpdates не возвращает то же возвращаемое значение. Либо функция вызывается асинхронно, либо она просто не была запрограммирована на возврат того же значения. Попробуйте вместо этого:
let power = require("nativescript-powerinfo");
let batteryPercent;
power.startPowerUpdates(function (Info) {
batteryPercent = Info.percent;
console.log("battery charge: " + batteryPercent + "%");
});
Затем проверьте, установлен ли batteryPercent
. Если это не так, то функция вызывается параллельно, и вам придется кодировать триггер, чтобы программа знала, что значение установлено. Пример:
Сначала проверьте, если функция вызывается синхронно (вероятно, нет):
...
console.log(batteryPercent); // check the value here
Если журнал консоли не определен, вам понадобится другой подход:
let updateBatteryPercent = (newBatteryPercent) => {
batteryPercent = newBatteryPercent;
continueExecutionFunction();
}
// and now you should have:
power.startPowerUpdates(function (Info) {
console.log("battery charge: " + Info.percent+ "%");
updateBatteryPercent(Info.percent);
});
function continueExecutionFunction() {
// here you should have whatever you'd like to
// happen after you find out the battery percent
}
В идеале вам следует использовать функции await и async, но это более продвинутый вариант. Не играйте с ними, пока проблемы, подобные той, что у вас возникли, не будут легкими.