Skip to content

Commit fe20f5f

Browse files
Refactored the internal finalize logic of the useAsyncCallback hook;
1 parent 390fdd6 commit fe20f5f

File tree

1 file changed

+12
-17
lines changed

1 file changed

+12
-17
lines changed

lib/use-async-effect.js

+12-17
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ const useAsyncEffect = (generator, options) => {
118118
return;
119119
}
120120

121-
state && err.code!==E_REASON_UNMOUNTED && setState({
121+
state && err.code !== E_REASON_UNMOUNTED && setState({
122122
done: true,
123123
error: err,
124124
canceled: true
@@ -170,8 +170,7 @@ const useAsyncCallback = (generator, options) => {
170170
promises: [],
171171
queue: [],
172172
pending: 0,
173-
args: null,
174-
mounted: true
173+
args: null
175174
});
176175

177176
let {
@@ -271,15 +270,17 @@ const useAsyncCallback = (generator, options) => {
271270

272271
const canceled= !!(isRejected && CanceledError.isCanceledError(value));
273272

274-
if(states && singleThreaded && current.mounted){
275-
setState({
276-
done: true,
277-
pending: false,
278-
error: isRejected? value : undefined,
279-
result: isRejected? undefined : value,
280-
canceled
281-
})
273+
if(canceled && value.code === E_REASON_UNMOUNTED){
274+
return;
282275
}
276+
277+
state && singleThreaded && setState({
278+
done: true,
279+
pending: false,
280+
error: isRejected? value : undefined,
281+
result: isRejected? undefined : value,
282+
canceled
283+
});
283284
}).weight(0).aggregate();
284285

285286
promises.push(promise);
@@ -332,12 +333,6 @@ const useAsyncCallback = (generator, options) => {
332333
return () => cancel(E_REASON_UNMOUNTED);
333334
}, deps);
334335

335-
if (states) {
336-
useEffect(() => () => {
337-
current.mounted = false;
338-
}, []);
339-
}
340-
341336
callback.cancel = cancel;
342337

343338
return callback;

0 commit comments

Comments
 (0)