タグ付けされた質問 「ecmascript-next」

4
アロー関数(パブリッククラスフィールド)をクラスメソッドとして使用する方法
ReactでES6クラスを使用するのは初めてですが、以前は現在のオブジェクトにメソッドをバインドしていましたが(最初の例を参照)、ES6を使用すると、クラス関数を矢印でクラスインスタンスに永続的にバインドできますか?(コールバック関数として渡すときに便利です。)CoffeeScriptでできるように使用しようとすると、エラーが発生します。 class SomeClass extends React.Component { // Instead of this constructor(){ this.handleInputChange = this.handleInputChange.bind(this) } // Can I somehow do this? Am i just getting the syntax wrong? handleInputChange (val) => { console.log('selectionMade: ', val); } SomeClass.handleInputChangeたとえばsetTimeout、に渡した場合、スコープはwindowオブジェクトではなくクラスインスタンスにスコープされます。

11
ES 6のオブジェクトからいくつかのプロパティを取得するためのワンライナー
ES6で最もコンパクトな方法で少数の属性のみを取る関数をどのように作成できますか? 解体+単純化されたオブジェクトリテラルを使用した解決策を考え出しましたが、フィールドのリストがコード内で繰り返されるのが嫌いです。 さらにスリムなソリューションはありますか? (v) => { let { id, title } = v; return { id, title }; }

1
JavaScriptの二重コロン(バインド演算子)
ご存知のように、.bind()関数のショートカットの提案があるので、次のように書くことができます。 ::this.handleStuff es5でも同様に機能します。 this.handleStuff.bind(this) 私の質問は、このように引数を渡すことは可能ですか? 前述のショートカットでこれを書く方法を意味します: this.handleStuff.bind(this, 'stuff') Reactではかなり一般的なパターンなので、少し短くしておくとよいでしょう。

4
async / awaitは暗黙的にpromiseを返しますか?
asyncキーワードでマークされた非同期関数が暗黙的にpromiseを返すことを読みました。 async function getVal(){ return await doSomethingAync(); } var ret = getVal(); console.log(ret); しかし、それは首尾一貫していない...仮定doSomethingAsync()がpromise を返し、awaitキーワードがpromise itefではなくpromiseから値を返す場合、私のgetVal関数は暗黙のpromiseではなくその値を返す必要があります。 それでは、具体的にはどうなのでしょうか。asyncキーワードでマークされた関数は暗黙的にpromiseを返しますか、それともそれらが返すものを制御しますか? おそらく、明示的に何かを返さない場合、暗黙的に約束が返されます...? より明確にするために、上記との違いがあります function doSomethingAync(charlie) { return new Promise(function (resolve) { setTimeout(function () { resolve(charlie || 'yikes'); }, 100); }) } async function getVal(){ var val = await doSomethingAync(); // val is not a …

6
ジェネレーターによるasync / awaitとES6のyieldの違い
この素晴らしい記事«ジェネレーター»を読んでいたところ、ジェネレーター関数を処理するためのヘルパー関数であるこの関数が明確に強調されています。 function async(makeGenerator){ return function () { var generator = makeGenerator.apply(this, arguments); function handle(result){ // result => { done: [Boolean], value: [Object] } if (result.done) return Promise.resolve(result.value); return Promise.resolve(result.value).then(function (res){ return handle(generator.next(res)); }, function (err){ return handle(generator.throw(err)); }); } try { return handle(generator.next()); } catch (ex) { return Promise.reject(ex); } …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.