Javascript return Promise.reject和抛出新错误之间的差异

Javascript return Promise.reject和抛出新错误之间的差异,javascript,promise,Javascript,Promise,我正在研究return-Promise.reject和throw-new-Error之间的区别,它们看起来很相似,下面是catch代码: } catch (err) { return Promise.reject(err); //throw new Error(err); } 对于抛出新错误,我只看到添加了“TypeError” 有时我在异步函数中使用,看起来也很好 throw(err); { "data": { "userlogs":

我正在研究return-Promise.reject和throw-new-Error之间的区别,它们看起来很相似,下面是catch代码:

} catch (err) {
  return Promise.reject(err);
  //throw new Error(err);
}
对于抛出新错误,我只看到添加了“TypeError”

有时我在异步函数中使用,看起来也很好

throw(err);

    {
        "data": {
            "userlogs": null
        },
        "errors": [
            {
                "message": "TypeError: Cannot read property 'findAll' of undefined",
                "locations": [
                    {
                        "line": 2,
                        "column": 3
                    }
                ],
                "path": [
                    "userlogs"
                ]
            }
        ]
    }
有了承诺,信息更加清晰:

    {
        "data": {
            "userlogs": null
        },
        "errors": [
            {
                "message": "Cannot read property 'findAll' of undefined",
                "locations": [
                    {
                        "line": 2,
                        "column": 3
                    }
                ],
                "path": [
                    "userlogs"
                ]
            }
        ]
    }

有什么建议吗?我正在使用wait for call函数,最好在该场景中使用Promise.reject,并在任何情况下使用throw new Error?

重要的区别在于
throw
构造了一个新的
Error
实例,而
Promise
版本则没有。我怀疑如果您返回
Promise.reject(新错误(err))
或将
throw
更改为just
throw err那么行为就完全一样了。看这个问题[可能对你有帮助]谢谢你的四个回答…我把一切都改成了承诺。拒绝