@@ -158,6 +158,7 @@ const argsToPromiseMap = new Map();
158
158
* @param {number } [options.queueSize=0]
159
159
* @param {boolean } [options.scopeArg= false]
160
160
* @param {boolean } [options.states= true]
161
+ * @param {boolean } [options.catchErrors= true]
161
162
* @returns {UseAsyncCallbackDecoratedFn }
162
163
*/
163
164
const useAsyncCallback = ( generator , options ) => {
@@ -180,7 +181,8 @@ const useAsyncCallback = (generator, options) => {
180
181
threads,
181
182
queueSize = - 1 ,
182
183
scopeArg= false ,
183
- states= false
184
+ states= false ,
185
+ catchErrors= false
184
186
} = options && Array . isArray ( options ) ? { deps : options } : options || { } ;
185
187
186
188
if ( threads === undefined ) {
@@ -234,7 +236,7 @@ const useAsyncCallback = (generator, options) => {
234
236
if ( threads || queueSize !== - 1 ) {
235
237
let started ;
236
238
237
- const promise = new CPromise ( resolve => {
239
+ let promise = new CPromise ( resolve => {
238
240
const start = ( ) => {
239
241
current . pending ++ ;
240
242
@@ -261,7 +263,7 @@ const useAsyncCallback = (generator, options) => {
261
263
start ( ) ;
262
264
} ) . weight ( 0 )
263
265
. then ( resolveGenerator )
264
- . finally ( ( value , isRejected ) => {
266
+ [ catchErrors ? 'done' : ' finally' ] ( ( value , isRejected ) => {
265
267
started && current . pending -- ;
266
268
removeElement ( promises , promise ) ;
267
269
combine && argsToPromiseMap . delete ( promise ) ;
@@ -287,7 +289,7 @@ const useAsyncCallback = (generator, options) => {
287
289
return promise ;
288
290
}
289
291
290
- const promise = resolveGenerator ( ) . finally ( ( ) => {
292
+ const promise = resolveGenerator ( ) [ catchErrors ? 'done' : ' finally' ] ( ( ) => {
291
293
removeElement ( promises , promise ) ;
292
294
combine && argsToPromiseMap . delete ( promise ) ;
293
295
} ) . weight ( 0 ) . aggregate ( ) ;
@@ -296,7 +298,6 @@ const useAsyncCallback = (generator, options) => {
296
298
297
299
if ( combine ) {
298
300
argsToPromiseMap . set ( promise , args ) ;
299
- return CPromise . resolve ( promise ) ;
300
301
}
301
302
302
303
return promise ;
0 commit comments