Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Can';不要拒绝承诺_Javascript_Node.js - Fatal编程技术网

Javascript Can';不要拒绝承诺

Javascript Can';不要拒绝承诺,javascript,node.js,Javascript,Node.js,这不会捕获错误,它仍然被视为“未处理的弹出”。为什么?如果调用的是异步函数,或是返回承诺的函数,则需要正确排序: 异步函数sendPushNotification(订阅,urlEncodedData){ 试一试{ 等待webpush.sendNotification(订阅,urlEncodedData); }捕捉(错误){ console.log('err'); 控制台日志(err); } } 此处wait将捕获任何响应。将显示为异常的错误条件 请注意,这会使sendPushNotificat

这不会捕获错误,它仍然被视为“未处理的弹出”。为什么?

如果调用的是
异步
函数,或是返回
承诺的函数,则需要正确排序:

异步函数sendPushNotification(订阅,urlEncodedData){
试一试{
等待webpush.sendNotification(订阅,urlEncodedData);
}捕捉(错误){
console.log('err');
控制台日志(err);
}
}
此处
wait
将捕获任何响应。将显示为异常的错误条件


请注意,这会使
sendPushNotification()
返回一个
Promise
,因此您必须将其视为异步的。这意味着呼叫方也需要等待
,这可能会对呼叫链产生影响,具体取决于您的排序要求。

您不需要等待吗?关于webpush还有其他的细节吗?太残酷了,谢谢你的帮助,我永远也想不到。如果你习惯于像大多数其他语言一样阻塞代码(同步),那么围绕JavaScript异步编码风格绞尽脑汁可能有点麻烦,所以不要为此自责。你们真的很接近。我通常在JS中使用async/await,但我以前从未见过这种情况。
function sendPushNotification(subscription, urlEncodedData){
  try {
    webpush.sendNotification(subscription, urlEncodedData);
  } catch (err){
    console.log('err');
    console.log(err);
  }
}