GM.getValue не определен - PullRequest
       79

GM.getValue не определен

1 голос
/ 13 июля 2020

Я пишу небольшой пользовательский скрипт, и сначала он был только для одной веб-страницы. Теперь, когда я добавил больше функций, я пытаюсь разрешить скрипту работать на нескольких сайтах, и, насколько я понимаю, мне нужно go с localStorage на GM.getValue, но не заставит его работать. Я уже узнал, что это функции asyn c, и я должен его использовать. Итак, чтобы лучше узнать эти функции, я написал небольшой тестовый скрипт и все еще не добился успеха - так что, возможно, кто-то может мне помочь.

Я заставляю GM.setValue работать, поэтому, если я проверю Tampermokey, скрипт -tag Я вижу, что у меня есть для этого скрипта в хранилище:

{
    "WFP_token": "123456789"
}

, а пользовательский скрипт

// @grant           GM.getValue
// @grant           GM.setValue
// @grant           GM_getValue
// @grant           GM_setValue
// ==/UserScript==

(function() {
    'use strict';
    /**
    * Overall script parts are placed here
    */
    console.log('[WFP]: init');

    function getToken() {
        (async () => {
            let token = GM.getValue("WFP_token",-1);
            if (token != -1 && token != undefined) {
                return token;
            } else {
                window.setTimeout(getToken(),10)
            }
        })();
    }
    const WEBHOOK_TOKEN = getToken();
    console.log('[WFP]: '+WEBHOOK_TOKEN);

вывод консоли:

[WFP]: init
[WFP]: undefined

Может кто-нибудь, помогите мне и укажите, где я ошибаюсь и кого мне следует использовать GM.getValue?

1 Ответ

0 голосов
/ 13 июля 2020

используйте ожидание рядом с GM.getValue, getToken() и возвращайте обещание в setTimeout иначе

(async function() {
  'use strict';
  /**
   * Overall script parts are placed here
   */
  console.log('[WFP]: init');

  async function getToken(a) {
    let token = await GM.getValue("WFP_token", -1);
    if (token != -1 && token != undefined) {
      return token;
    } else {
      return new Promise((resolve) => {
        window.setTimeout(() => resolve(getToken()), 10);
      })
    }
  }

  const WEBHOOK_TOKEN = await getToken();
  console.log('[WFP]: ' + WEBHOOK_TOKEN);
})();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...