我正在尝试检查是否已经使用bridgeObject.checkStatus
全局变量调用了isRunning
。
如果还没有,那么我将其命名为isRunning
并将其设置为true
。
然后,当不更改时,它将变回false。
if (!this.isRunning){
this.isRunning = true;
bridgeObject.checkStatus().then(() => {
this.isRunning = false;
});
} else {
console.log('Not allowed to checkstatus, Value isRunning= ' + this.isRunning);
}
但我收到此错误:
TypeError:无法读取全局变量的undefined属性“ then”
我是编程的超级新手,所以我无法根据这里的其他答案弄清楚为什么会出现此错误以及如何处理。
更新:
这是checkStatus的作用
checkStatus: function (mediaUrl) {
console.log('bridge checkStatusOnDevice');
if (typeof (Device) != 'undefined' && Device!= null) {
Device.checkStatusOnDevice();
}
else
{
deviceStatusSuccess();
}
},
最佳答案
您的checkStatus
函数不返回任何内容-因此结果为undefined
。然后,您尝试在then
函数的结果上调用checkStatus
,这将导致您出现错误消息。
如果checkStatus
函数正在异步运行并且要在结果上调用then
,则需要使它返回一个promise。
可能看起来像这样:
checkStatus: function (mediaUrl) {
return new Promise((resolve, reject) => {
console.log('bridge checkStatusOnDevice');
if (typeof (Device) != 'undefined' && Device!= null) {
// call resolve/reject when the following call succeeded/failed respectively
Device.checkStatusOnDevice();
// This COULD be something like this, if the API is callback based:
// Device.checkStatusOnDevice(() => resolve(), () => reject())
} else {
// call resolve/reject when the following call succeeded/failed respectively
deviceStatusSuccess();
}
});
},