53128


いつもお世話になっています。  
【質問の主旨】で示すJavaScriptコード（promise.js）について質問です。  
ご存知の方がいらっしゃいましたらご教示を願います。

* * *

### 【質問の主旨】

[code]

    function runAsync(value) {
      return new Promise((resolve, reject) => {
        setTimeout(() => {
          if (typeof value === 'number') {
            resolve(value * 2);
          } else {
            reject(new Error(`${value}は数値ではありません。`));
          }
        }, 500);
      });
    }
    
    runAsync(15)
      .then(response => console.log(`成功［${response}］`))
      .catch(error => console.log(`失敗［${error}］`))
      .finally(() => console.log('終了'));
    
[/code]

このファイルを実行すると2秒後にrunAsync関数の引数になっている数字が、2倍に変化してコンソール画面に表示されるコードです。

[code]

    .finally(() => console.log('終了'));
              ^
    TypeError: runAsync(...).then(...).catch(...).finally is not a function
    
[/code]

`node promise.js`でターミナルから実行すると上記のエラーが表示されます。なぜでしょうか？

### 【質問の補足】

[code]

    runAsync(15)
      .then(response => console.log(`成功［${response}］`))
      .catch(error => console.log(`失敗［${error}］`));
    
[/code]

上記の通りメソッド2つに減らすと、`成功［30]`とだけ表示されます

* * *

以上、ご確認のほどよろしくお願い申し上げます。


CC BY-SA 4.0
2019-03-02T05:59:40.440
53126
2019-03-02T07:25:23.800
32232
question
javascript node.js promise
Promiseオブジェクトのfinallyメソッドを実行するとエラーが出るのはなぜでしょうか？


node.jsのバージョンが古いと思われます。

Promiseのfinallyは比較的新しいメソッドなので、古い環境では使用できません（[MDN](https://developer.mozilla.org/en-
US/docs/Web/JavaScript/Reference/Global_Objects/Promise/finally#Browser_compatibility)）。

node.jsで使用するには、 **node.jsのv10以上** が必要です。


CC BY-SA 4.0
2019-03-02T07:25:23.800
53128
2019-03-02T07:25:23.800
30079
53126
answer