Skip to content

Commit 17ca3a9

Browse files
committed
fix for infinite loop
1 parent 6cdb1dc commit 17ca3a9

File tree

2 files changed

+35
-0
lines changed

2 files changed

+35
-0
lines changed

packages/core/src/request.ts

+8
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export class Request {
1010
protected response!: AxiosResponse
1111
protected cancelToken!: AbortController
1212
protected requestParams: RequestParams
13+
protected requestHasFinished = false
1314

1415
constructor(
1516
params: ActiveVisit,
@@ -72,6 +73,13 @@ export class Request {
7273
}
7374

7475
protected fireFinishEvents(): void {
76+
if (this.requestHasFinished) {
77+
// This could be called from multiple places, don't let it re-fire
78+
return
79+
}
80+
81+
this.requestHasFinished = true
82+
7583
fireFinishEvent(this.requestParams.all())
7684
this.requestParams.onFinish()
7785
}

playgrounds/vue3/resources/js/Pages/Async.vue

+27
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,27 @@ const triggerCancel = () => {
7878
)
7979
}
8080
81+
const triggerCancelAfterFinish = () => {
82+
let cancelToken
83+
84+
router.post(
85+
'/sleepy/1',
86+
{},
87+
{
88+
onCancelToken: (token) => {
89+
console.log('onCancelToken')
90+
91+
cancelToken = token
92+
},
93+
onFinish: () => {
94+
console.log('onFinish')
95+
console.log('CANCELLING!')
96+
cancelToken.cancel()
97+
},
98+
},
99+
)
100+
}
101+
81102
watch(reloadCount, () => {
82103
console.log('watched reload count value', reloadCount.value)
83104
})
@@ -125,5 +146,11 @@ watch(reloadCount, () => {
125146
<p>Trigger an automatic cancellation from the token.</p>
126147
<button @click="triggerCancel" class="px-4 py-2 text-white bg-green-600 rounded">Trigger Cancel</button>
127148
</div>
149+
<div class="p-4 space-y-4 text-sm text-gray-500 border border-gray-300 rounded">
150+
<p>Trigger an automatic cancellation from the token after finishing request.</p>
151+
<button @click="triggerCancelAfterFinish" class="px-4 py-2 text-white bg-green-600 rounded">
152+
Trigger Cancel After Finish
153+
</button>
154+
</div>
128155
</div>
129156
</template>

0 commit comments

Comments
 (0)