LoginSignup
2

More than 5 years have passed since last update.

備忘録: Node.js の aws-sdk での callback と Promise の違い

Posted at

時間も遅いのでとりあえずは前提と備忘録だけ

前提

  • Node.js の aws-sdk を使って簡易的なツールを作ろうとしている最中
  • 今、いじろうとしているのは S3
  • Node のバージョンは v6.9.2

promise() を使うと Promise もサポートされる

aws-sdk は Promise とかができる前から作られていたらしく、基本的に callback を前提とした作りになっている。
けども昨今の Promise による、管理しやすい実装もちゃんとサポートされていてpromise() という関数を噛ませる事で、Promise を返すようになる

けど、コードの違いに注意

// Callback による実装
s3.createBucket({Bucket: 'mybucket'}, (err, data) => {
  if (err) {
    return console.log("Error", err);
  }
  return console.log(data);
});

// Promise
s3.createBucket({Bucket: 'mybucket'}).promise().then(data => {
  return console.log(data);
}).catch(err => {
  return console.log("Error", err);
});

ご覧の通り、エラーは catch によって検知できるので、then へ渡される値は1つになるのです。(というか2つの値を return できないから必然的に 1 つになるしかないんだけどさ)

最初、then の中でも (err, data) => {} と書いていたから、エラー吐いてるけど S3 は作られているという謎状況に陥って少しハマってました←

以上、そんな感じで。

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
2