Skip to content

Instantly share code, notes, and snippets.

@xryuseix
Last active May 13, 2020 06:02
Show Gist options
  • Save xryuseix/49a4f7fad7817e3532c8e596d9f99491 to your computer and use it in GitHub Desktop.
Save xryuseix/49a4f7fad7817e3532c8e596d9f99491 to your computer and use it in GitHub Desktop.
function storageGet() {
var res;
chrome.storage.local.get(res = callbackFunc(items));
console.log(res);
return res;
}
function callbackFunc(items) {
console.log(items);
callback(items);
}
const items = storageGet();
@ygkn
Copy link

ygkn commented May 12, 2020

function storageGet(callback) {
  chrome.storage.local.get(items => callback(items));
}

ってして

storageGet(console.log)

みたいにする

@ygkn
Copy link

ygkn commented May 12, 2020

Promiseというものを使えば、

function storageGet() {
  return new Promise((resolve) => chrome.storage.local.get((items) => resolve));
}

と書いて

storageGet().then(items => console.log(items));

とすることが可能じゃ

@ygkn
Copy link

ygkn commented May 12, 2020

Promiseを使った場合、async awaitという特殊な書き方ができるぞい
storageGetの定義はそのままで、

// async function の中で

const iitem = await storageGet();
console.log(item);

とかける。

@xryuseix
Copy link
Author

xryuseix commented May 12, 2020

最初の,

function storageGet(callback) {
  chrome.storage.local.get(items => callback(items)); // この行で何故か表示がされている&正しい結果が出ている
}

function postPlayLists() {
  const playlists = storageGet(console.log);
  console.log(playlists); // undefined
}

って感じなんだけど,こうではないんだよね?

@xryuseix
Copy link
Author

xryuseix commented May 12, 2020

三つ目の,はこんな感じ...

function storageGet() {
  return new Promise((resolve) => chrome.storage.local.get((items) => resolve));
}

async function postPlayLists() {
  const playlists = await storageGet();
  console.log(playlists); // エラーも何も表示されない
}

@ygkn
Copy link

ygkn commented May 12, 2020

最初の,

function storageGet(callback) {
  chrome.storage.local.get(items => callback(items)); // この行で何故か表示がされている&正しい結果が出ている
}

function postPlayLists() {
  const playlists = storageGet(console.log);
  console.log(playlists); // undefined
}

って感じなんだけど,こうではないんだよね?

console.log(playlists); はちゃうな〜

@ygkn
Copy link

ygkn commented May 12, 2020

三つ目の,はこんな感じ...

function storageGet() {
  return new Promise((resolve) => chrome.storage.local.get((items) => resolve));
}

async function postPlayLists() {
  const playlists = await storageGet();
  console.log(playlists); // エラーも何も表示されない
}
 function storageGet() {
-  return new Promise((resolve) => chrome.storage.local.get((items) => resolve));
+  return new Promise((resolve) => chrome.storage.local.get((items) => resolve(items)));
 }

やったわテヘペロ

@xryuseix
Copy link
Author

xryuseix commented May 12, 2020

new Promise((resolve) => chrome.storage.local.get((items) => resolve));
+  return new Promise((resolve) => chrome.storage.local.get((items) => resolve(items)));
}

やったわテヘペロ

できた!!!ありがとう!!

console.log(playlists); はちゃうな〜

これは,どうしたらよかったの??

@ygkn
Copy link

ygkn commented May 13, 2020

普通に

function postPlayLists() {
  const playlists = storageGet(() => { /* なんかする */});
}

やで

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment