我正在尝试检查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();
}
},
答案 0 :(得分:1)
您的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();
}
});
},