Questions tagged «ecmascript-next»

4
如何使用箭头函数(公共类字段)作为类方法?
我是将ES6类与React结合使用的新手,以前我一直将我的方法绑定到当前对象(如第一个示例所示),但是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对象。


1
JavaScript双冒号(绑定运算符)
如您所知,有一个.bind()功能快捷方式的建议,因此您可以编写: ::this.handleStuff 它将在es5中像这样工作: this.handleStuff.bind(this) 我的问题是:是否可以通过这种方式传递参数? 我的意思是用上述快捷方式编写此代码的方法: this.handleStuff.bind(this, 'stuff') 这是React中很常见的模式,因此最好将其缩短一点。

4
异步/等待隐式返回诺言?
我读到用async关键字标记的异步函数隐式返回一个promise: async function getVal(){ return await doSomethingAync(); } var ret = getVal(); console.log(ret); 但这并不连贯...假设doSomethingAsync()返回一个诺言,而await关键字将从诺言中返回值,而不是诺言itef,那么我的getVal函数应该返回该值,而不是隐式诺言。 那到底是什么情况?用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 promise console.log(val); …

6
生成器的异步/等待和ES6收益之间的区别
我刚刚读了这篇很棒的文章《生成器》,它清楚地突出了此函数,它是处理生成器函数的辅助函数: 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); } …

6
JavaScript数组.reduce与async / await
似乎在将async / await与.reduce()合并时遇到一些问题,如下所示: const data = await bodies.reduce(async(accum, current, index) => { const methodName = methods[index] const method = this[methodName] if (methodName == 'foo') { current.cover = await this.store(current.cover, id) console.log(current) return { ...accum, ...current } } return { ...accum, ...method(current.data) } }, {}) console.log(data) 在完成之前data记录该对象。this.store 我知道您可以利用Promise.all异步循环,但这是否适用于.reduce()?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.