eslint 是否有能力警告防止未处理的承诺拒绝的地方?
不推荐使用未处理的承诺拒绝。将来,未处理的承诺拒绝将使用非零退出代码终止 Node.js 进程。- DEP0018
你知道吗,我有点喜欢引擎目前处理 Unhandled-Promise-Rejections 的方式;因为当您遇到 Unhandled-Promise-Rejection 时,您的整个服务不会崩溃,而是会继续运行,并且只有依赖于错误承诺实例的部分无法完成。假设错误是由程序员在验证期间未预料到的某些用户输入引起的。有异常的异步函数继续服务于其他调用(那些没有相同的意外用户输入的调用)。是的,此时程序中存在垃圾,以永远等待永远无法解决的等待的形式,但对我来说,这比让服务完全崩溃更强大。
无论如何,我想其他人已经决定完美比稳健更重要。
因此,是时候让我的代码变得丑陋和完美了,.catch(()=>{});在我之前看起来像 MOP&GLOW 一样干净的代码中的所有等待之后不久附加。
ESlint 是否提供任何帮助我在没有捕获的情况下定位承诺的东西?是否有任何规范添加正在进行中,以解决这种丑陋和不便?
就个人而言,我希望我可以将引擎配置为仅终止来自 UnhandledPromiseRejection 的承诺链中的代码。我当然希望比将所有这些添加.catch(()=>{})到我等待的所有异步函数调用中更容易解决这个问题。
javascript node.js custom-error-handling ecmascript-next unhandled-promise-rejection
在此,绑定运营商是为了方便的提案this为ES7方法绑定语法:
// this-bind via '::'
$(".some-link").on("click", ::view.reset);
// oldschool .bind(this, ...)
$(".some-link").on("click", view.reset.bind(view))
// or even longer...
$(".some-link").on("click", function () {
return view.reset.apply(view, Array.prototype.slice.call(arguments));
})
// and even ES6 while is more handy, but still leaves some redundancy
$(".some-link").on("click", (...args) => view.reset(...args));
Run Code Online (Sandbox Code Playgroud)
问题是,它仍处于未来(7)版ES的提案阶段,因此它尚未包含在标准中,因此不受ESLint的支持,同时仍然可以通过tanspiling(与Babel,fe)一起使用.
问题是,ESLint是否有任何模块/插件/选项支持函数绑定操作符(或整套ES7实验特性)语法?
是否可以在一行中编写下面的代码(没有return关键字)?
elements.map(element => {
return {...element, selected: false};
})
Run Code Online (Sandbox Code Playgroud) 是否可以在ES6中具有解构的赋值表达式而无需声明变量?
换句话说,为什么以下代码在语法上不正确?
(我知道可以使用很多方法来重写此代码。)
'use strict';
let var1 = 'defaultVal1', var2 = 'defaultVal2';
const obj = { group: { var1: 'newVal1', var2: 'newVal2' } }
if (obj) {
{ group: { var1, var2 } } = obj; // No 'let'/'const' keyword, i.e. no redeclaration, but invalid expression
}
console.log(var1);
console.log(var2);
Run Code Online (Sandbox Code Playgroud) 我尝试用扩展语法编写三元运算符并复制两个对象.是否可以在文字对象中使用带有扩展语法的三元运算符?我的代码工作正常,我只想优化它.
hintStyle: disabled ? {...globalStyles.hint, ...globalStyles.hintDisabled} : globalStyles.hint,
Run Code Online (Sandbox Code Playgroud)
我想这样写:
hintStyle: {...globalStyles.hint, {disabled ? ...globalStyles.hintDisabled : {}}},
Run Code Online (Sandbox Code Playgroud) 我正在尝试学习ecmascript的提议类语法并将其与React一起使用,我已经使用带有webpack的babel成功地使用es6渲染了组件.现在我想在构造函数之外声明的类中使用实例属性.例如:
class MyComponent extends React.Component{
constructor(props){
super(props)
}
property1= "new property";
func1= ()=>{
}
}
Run Code Online (Sandbox Code Playgroud)
在尝试执行此类操作时,我在'property1'和'func1'上收到错误"意外令牌".另外,我在webpack中使用babel预设的react和babel-preset-env插件.
我想限制在我的班级中使用"this"关键字,所以我认为较新的es7类可以实现,我该怎么做?任何帮助,将不胜感激.
编辑1:如答案所示,我包含了"babel-preset-stage-2"预设,我能够在类中包含构造函数之外的变量,但必须使用'this'来引用它们.
新的对象rest/spread语法有一些令人惊讶的好应用程序,比如从对象中省略一个字段.
是否有(建议的)方法也可以分配给对象的多个属性,来自具有相同名称的变量的值?换句话说,更短的说法:
o.foo = foo;
o.bar = bar;
o.baz = baz;
Run Code Online (Sandbox Code Playgroud)
更新:忘记添加:不丢失o的现有属性
ES2018之前,我曾经窝额外then的承诺链的末端,每当我不得不执行任何清理逻辑,我想重复,否则在then和catch更高,如
new Promise(
(res, rej) => setTimeout(() => rej({}), 1000)
).then(
res => console.log(res)
).catch(
err => console.error(err)
).then(
() => console.log('Finally')
)Run Code Online (Sandbox Code Playgroud)
但是现在finally已经在Promise原型上添加了,我看不出它then与上述方法中的最后一个有什么不同.以下将产生相同的输出.
new Promise(
(res, rej) => setTimeout(() => rej({}), 1000)
).then(
res => console.log(res)
).catch(
err => console.error(err)
).finally(
() => console.log('Finally')
)Run Code Online (Sandbox Code Playgroud)
难道finally仅仅是服务于本地无极API在语义的目的是什么?
所以我最近才开始潜心研究 Web 开发。我很快收集到的一件事是 ES5 = 旧的,而 ES6 = 闪亮的和新的。我认为 ES6 是最新和最好的 ES 必须提供的。但我刚刚发现 ES6 落后 3 个标准,而且我一直在使用和喜爱的一些功能甚至都不属于它的一部分——它们出现在后来的规范中。那么为什么我读到的所有内容都让人觉得只有 ES5 和 ES6?
ecmascript-6 ecmascript-next ecmascript-2016 ecmascript-2017 ecmascript-2018
我怎样才能脱机这个“示例”承诺---即将承诺归因于一个变量以供以后传递/使用---
// this example promise works OK...
// just test with x=0 and x<>0
var x=0;
( new Promise( ( a, b ) =>
{ if ( x==1 ) a(); else b(); } ) )
.then( ()=>console.log( "RS=>OK" ), ()=>console.log( "RJ=>KO" )
)
Run Code Online (Sandbox Code Playgroud)
我想将承诺归因于一个变量,就像
var p = new Promise( ... )
Run Code Online (Sandbox Code Playgroud)
但是承诺是在创建时执行的......
?我怎样才能推迟这个执行,以便以后调用承诺的方法......例如: p.exec()
ecmascript-next ×10
javascript ×9
ecmascript-6 ×2
promise ×2
eslint ×1
node.js ×1
object ×1
reactjs ×1
typescript ×1
unhandled-promise-rejection ×1
webpack ×1