5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【失敗則】【アホな勘違い】Promiseで ReferenceError: resolve is not defined と出たら

Posted at

結論

引数は省略せずに書きましょう。

迷走時間30分。衝動書き。

概要

new Promise(function(res, rej) {
    resolve();
})

ReferenceError: resolve is not defined

が出る。

正しくは

new Promise(function(resolve, reject) {
    resolve();
})

なぜ間違えたのか

リファレンスなどで書かれている長い変数名は省略する傾向にある。

resolve()という書き方は、this.resolve()=Promise.resolve()の省略形だと思っていた。(意味不明)

アロー関数() => {}で書いており、アロー関数の場合は(babelをかますと?)thisを手動でbind(this)しなけれなならない的知識がついていた。

console.log(this)とすると、グローバルのWindowが返ってきていた。

よって、thisPromiseにしようと悪戦苦闘。

JavaScript Promiseの本
のサンプルコードをコピペして見比べて発覚。

引数が関数パターンに弱い。

Promise理解していない。

$.ajaxとかでコールバックの無名関数の引数名を任意に変えるぐらいなんどもしているのだが…

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?