私はES6の標準を学んでいますので、非常に基本的なコードから始めます。コールバックコードをES6で約束する方法
JavaScriptにコールバックヘリングが存在するので、今回はコールバックの使用を避けたいと考えています。しかし、私はコールバックスタイルのコードを約束事に変換する方法がわからないという問題に直面しました。私は、このようなコードがある場合たとえば
は、
私はES6でPromise
に変換する必要がありますどのよう
module.exports = (x, y, callback) => {
try {
if (x < 0 || y < 0) {
throw new Error('Rectangle dimensions are wrong.');
} else {
callback(null, {
perimeter() {
return (2 * (x + y));
},
area() {
return (x * y);
},
});
}
} catch (error) {
callback(error, null);
}
};
以下のように見えますか?コールバックを約束に変換するのは、ある種の推奨動作ですか?
私はこの例を読んだことがありますが、私は結果で実際に混乱しました。私はコールバックを約束に書き換える前に、まずこのことを理解する必要があると思います。
let promise = new Promise(function(resolve, reject) {
console.log('Promise');
resolve();
});
promise.then(function() {
console.log('Resolved.');
});
console.log('Hi!');
// Promise
// Hi!
// Resolved
私の理解では、Promise
の実行直後に、作成したばかりということです。しかし、なぜthen
のコードが最後に実行されるのかわかりません。
もしPromise/A + [here](https://promisesaplus.com/)の仕様を読んで2.2.4と注意3.1に注意を払うなら、基本的に '.then'コールバックは非同期です。 –