javascript - 如何将值保存到函数的变量中?
问题描述
此代码使用 Nativescript 插件
let power = require("nativescript-powerinfo");
power.startPowerUpdates(function (Info) {
console.log("battery charge: " + Info.percent + "%");
});
控制台日志:电池电量:100 %
我想将此 Info.percent 保存到一个变量中,以便以后可以重用它。
不幸的是,它总是说,它未定义。我尝试了不同的方法。
喜欢:
var batterystatus = power.startPowerUpdates(function(Info){
return Info.percent;
}
或者
power.startPowerUpdates(function(Info){
return Info.percent;
var batterystatus = power.startPowerUpdates(function);
或者我也试过:
var batterystatus = power.startPowerUpdates(function(Info){
this.batterystatus = Info.percent
}
但几乎所有这些都提供了错误的结果。
typeof(Info.percent) = number
解决方案
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 函数,但这更高级。不要和他们一起玩,直到像你遇到的问题很容易。
推荐阅读
- javascript - d3.geoPath().projection 正在渲染黑色矩形而不是地图
- single-sign-on - 用户组的 BPM 流程(keycloak)
- python - Web3:OverflowError:Python int 太大而无法转换为 C ssize_t
- go - Terraform Provider-指定要提取的 SDK 版本/不能使用 validation.StringInSlice 类型 schema.SchemaValidateFunc 作为 SchemaValidateDiagFunc 类型
- python - 尝试在 DataFrame 中的切片副本上设置 A 值的 Python 问题
- r - R - 当前工作目录中不存在“错误”...,但显然存在
- dynamics-crm - 在 Dynamics CRM 插件中更改记录所有者
- azure-data-factory - 在 Azure 数据工厂派生列表达式中将字符串转换为 Int
- ruby-on-rails - 在 Rails 操作文本中放置一个相对链接按钮
- c++ - C++ 虚函数;基类作为函数参数