当它们失败时,回流操作会在控制台中引发错误

时间:2015-08-21 10:38:49

标签: javascript reactjs refluxjs

我在我的React应用程序中使用Reflux,并大量使用其异步操作。

最近,只要操作失败,我就会在控制台中收到Uncaught (in promise) some-error错误。

我研究了一下,发现每次触发动作时Reflux都会创建一个承诺,如果动作失败,承诺就会拒绝,没有人能够抓住它。我把它归结为:

// create an action with completed/failed children
var action = Reflux.createAction({asyncResult:true});

// *** First scenario - throws error *** //
// invoke the action
action();
// somewhere the action has failed
action.failed("some reason"); // throws an error in the console - why??


// *** Second scenario - ok *** //
// invoke the action, but with a catch clause
action().catch(function(){});
// somewhere the action has failed
action.failed("some reason 2"); // this is now ok...

Fiddle here

似乎每个操作触发器都会创建一个promise,并在操作失败时导致此问题。我想这只会在明确地调用action.triggerPromise而不是每次都调用时才会发生。

目前我必须在我的代码中为每个动作触发器附加一个catch子句来解决此问题。我希望我的组件只调用操作,而不是处理它们的结果。有没有办法避免它?我在这里错过了什么吗?

0 个答案:

没有答案