相关疑难解决方法(0)

如何在async/await语法中拒绝?

如何拒绝async/await函数返回的promise?

例如,最初

foo(id: string): Promise<A> {
  return new Promise((resolve, reject) => {
    someAsyncPromise().then((value)=>resolve(200)).catch((err)=>reject(400))
  });
}
Run Code Online (Sandbox Code Playgroud)

转换为async/await

async foo(id: string): Promise<A> {
  try{
    await someAsyncPromise();
    return 200;
  } catch(error) {//here goes if someAsyncPromise() rejected}
    return 400; //this will result in a resolved promise.
  });
}
Run Code Online (Sandbox Code Playgroud)

那么,在这种情况下,我怎么能正确地拒绝这个承诺呢?

javascript asynchronous typescript es6-promise ecmascript-2017

234
推荐指数
6
解决办法
10万
查看次数

什么时候`new Error()`比`Error()`更好?

ES5语言规范清楚地表明它的Error(foo)作用与此相同new Error(foo).

但我注意到,在野外,较长的new Error(foo)形式更常见.

这有什么理由吗?

是否有使用new Error(foo)优先使用的情况Error(foo)

javascript error-handling idiomatic

15
推荐指数
1
解决办法
1004
查看次数

Node.js约定通过回调返回多个错误?

因此,Node.js中回调函数的一般约定是"保留"错误的第一个参数(如果存在).例如:

callSomeBlockingFcn( function callbackWhenDone(err, result) {
  if( err ) ...
});
Run Code Online (Sandbox Code Playgroud)

如果您需要返回多个错误 - 例如多个数据验证错误 - 是否认为传递错误对象数组的形式不佳?例:

var callSomeBlockingFcn = function(callback) {
  // multiple errors to report back...
  callback( [ err1, err2, ...] );
}
Run Code Online (Sandbox Code Playgroud)

或者最好避免使用数组并使用引用数组的属性返回单个对象(如果需要)?例:

var callSomeBlockingFcn = function(callback) {
  // multiple errors to report back...
  callback( { errors: [ err1, err2, ...] } );
}
Run Code Online (Sandbox Code Playgroud)

javascript error-handling node.js

12
推荐指数
1
解决办法
2408
查看次数

“抛出新错误”和“抛出错误”之间的区别?

不使用关键字抛出错误有什么缺点吗new

throw new Error('Something went wrong');

/* vs */

throw Error('Something went wrong');
Run Code Online (Sandbox Code Playgroud)

javascript

9
推荐指数
1
解决办法
1874
查看次数

我可以在异步函数中抛出错误吗?

async/await在我的Node.js项目中使用.在某些地方我需要从async函数返回错误.如果我使用Promises,我可以这样做:

function promiseFunc() {
  return new Promise((res, rej) => {
    return rej(new Error('some error'))
  })
}
Run Code Online (Sandbox Code Playgroud)

但我正在使用async函数,所以没有resrej方法在那里.那么,问题是:我可以throwasync函数中出错吗?或者它被认为是好/坏的做法?

我想做的一个例子:

async function asyncFunc() {
  throw new Error('some another error')
}
Run Code Online (Sandbox Code Playgroud)

我也可以这样重写它:

async function anotherAsyncFunc() {
  return Promise.reject(new Error('we need more errors!'))
}
Run Code Online (Sandbox Code Playgroud)

但第一个看起来更清楚,我不确定应该使用哪一个.

javascript promise async-await es6-promise

8
推荐指数
1
解决办法
1万
查看次数

`throw 'foo'`、`throw Error('foo')`、`throw new Error('foo')` 和有什么区别?

我见过 3 种在 JavaScript 中抛出错误的不同方式:

throw 'message';
throw Error('message');
throw new Error('message');
Run Code Online (Sandbox Code Playgroud)

它们之间有什么区别?

注意:我知道类似的问题(123等)。它们都没有涵盖所有三种情况。

javascript error-handling throw

6
推荐指数
1
解决办法
1083
查看次数