babelについて質問です。よろしくお願い致します。
javascript
1import 'babel-polyfill' 2 3function* exec() { 4 try { 5 try { 6 yield 'test' 7 return 8 } catch(err) { 9 console.log(`inner catch`) 10 throw err 11 } finally { 12 console.log(`inner finally`) 13 } 14 } catch(err) { 15 console.log(`outer catch`) 16 } finally { 17 console.log(`outer finally`) 18 } 19} 20 21 22const iterator = exec() 23console.log(iterator.next()) 24console.log(iterator.next())
上記のコードをbabelを用いてトランスパイルし実行すると、以下のように外側のfinallyが実行されず困っております。
{ value: 'test', done: false } inner finally { value: undefined, done: true }
上記のコードから内側のfinallyを除いた以下のコードは外側のfinallyが実行されます。
javascript
1import 'babel-polyfill' 2 3function* exec() { 4 try { 5 try { 6 yield 'test' 7 return 8 } catch(err) { 9 console.log(`inner catch`) 10 throw err 11 } 12 } catch(err) { 13 console.log(`outer catch`) 14 } finally { 15 console.log(`outer finally`) 16 } 17} 18 19 20const iterator = exec() 21console.log(iterator.next()) 22console.log(iterator.next())
結果
{ value: 'test', done: false } outer finally { value: undefined, done: true }
ChromeやNode.js(v6.2.0)ではじめのコードを実行すると、以下のように意図した挙動になりました。
{value: "test", done: false} inner finally outer finally {value: undefined, done: true}
babelを用いた場合でも外側のfinallyブロックが実行されるようにする方法がございましたら、教えていただけないでしょうか?
よろしくお願い致します。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。