javascript Wakelock.释放不是一个函数,如何释放屏幕锁定,非移动的

kupeojn6  于 2023-10-14  发布在  Java
关注(0)|答案(2)|浏览(111)

我在Windows Chrome上使用JavaScript。
我可以成功地设置一个wakelock,并已测试,它确实,事实上,防止我的屏幕变暗。但是我不能释放它。我得到的错误是
wakeLock.release不是函数
我还尝试将发布代码放在一个javascript函数中并使用await。

async function set_wakelock() {
    wakeLock = await navigator.wakeLock.request('screen');
    return wakeLock;
}

var wakeLock = set_wakelock();

// alert(wakeLock);  // Correctly shows [Object promise]

try {
    wakeLock.release();
    wakeLock = null;
}  catch (err) {
    alert(err); // wakeLock.release is not a function
}
n53p2ov0

n53p2ov01#

set_wakelock是一个promise方法,因此立即返回是一个promise。更改代码以等待结果

var wakeLock = await set_wakelock();

例如:

async function set_wakelock() {
  wakeLock = await navigator.wakeLock.request('screen');
  return wakeLock;
}

var wakeLock = await set_wakelock();

// Use the wakelock here...

// Release the wakelock after you have finished using it
await wakeLock.release();
wakeLock = null;
vyswwuz2

vyswwuz22#

根据@derpirscher的评论,我需要以不同的方式调用release()。

async function set_wakelock() {
    wakeLock = await navigator.wakeLock.request('screen');
    // optional listener:
    wakeLock.addEventListener('release', () => {
         alert('Wake Lock was released');
    }); 
    return wakeLock;
}

function release_wakelock(){
    if  (! wakeLock){
        return;
    }
    try {
        wakeLock.then(wls => wls.release())
        wakeLock = null;
    }  catch (err) {
        // alert(err);
    }
}

var wakeLock = null;
wakeLock =  set_wakelock();
release_wakelock();

// note: should first check that navigator.wakeLock is supported by the browser.

相关问题