两个捕获的承诺/块声明都没有执行
Neither catch statement of promise/block is executing
我在worker中有这段代码。
var cBtnStore = {
a: function(){}
};
现在请注意,那里没有b
键。
然后,我在我的工人中有一个功能。它这样做:
function run() {
...
self.postMessageWithCallback(function() {
cBtnStore.b(); ////// there is no b key, this should prevent going to the return
});
...
return promise; // returns a promise
}
var gCB = {};
self.postMessageWithCallback = function(aMsgArr, aCB) {
var gCBID++;
aMsgArr.push(gCBID);
gCB[gCBID] = aCB;
self.postMessage(aMsgArr);
}
self.onmessage = function(msg) {
var aCBID = msg.data.pop();
gCB[aCBID].apply(msg.data);
};
然后我在工人中执行此操作:
try {
run().then(x=>{}, y=>{}).catch(z=>{console.error('promise caught')});
} catch(err) {
console.log('runComplete threw');
}
console.log('result:', result);
实际发生的情况 - 这将记录以控制台runComplete()
的返回值,该值"result:" [Promise object]
。catch
语句和 .catch
语句都不会执行。
我所期待的事情应该已经发生 - 它应该触发承诺或try-catch
块的catch
声明。
我的问题 - 有没有办法抓住这个?
当你写的时候
run().then(x=>{}, y=>{}).catch(z=>{console.error('promise caught')});
你的论点实际上意味着y=>{}
"吃掉所有错误"。如果你想看到错误,你应该写
run().then(x=>{}).catch(z=>{console.error('promise caught')});
相关文章:
- 无法在通过jQuery的ajax加载的页面中执行javascript
- Dojo不解析自定义小部件的模板html中的小部件声明性
- JavaScript执行暂时挂起页面
- 如何在ReactJS JSX中执行嵌套的if-else语句
- addEventListener函数是在声明listener时执行的
- JavaScript执行从函数声明开始,而不是从$(document).ready()开始
- 我可以信任 JavaScript 中声明中的执行顺序吗?
- 在声明命名函数后执行该函数
- 两个捕获的承诺/块声明都没有执行
- 出于性能原因,我是否应该避免多次执行相同的函数声明
- 如果在上层作用域中声明变量,则变量在局部作用域中是未定义的,并且在未执行的语句中在局部作用域中声明同名的变量
- 每当我尝试将一些修改后的值赋给脚本标记内的全局声明变量时,脚本标记就会停止执行.为什么
- 回调函数内部声明的变量是否保留在内存中,还是在回调执行结束时销毁?
- 当声明了重复的命名函数时,Javascript如何执行代码
- 如何在JavaScript中使用setTimeout()执行已经声明的函数
- 声明多个具有多个if's的var's,但是执行任何if's,而不是one、all或none.[H
- JavaScript匿名函数立即调用/执行(表达式与声明)
- 执行上下文两次声明名称
- 执行顺序-头与体中的Javascript变量声明
- onclick方法在我声明它时被执行