【发布时间】:2020-09-13 01:54:07
【问题描述】:
我正在使用 Laravel、VueJs 和 axios 进行实时搜索,所以每次用户输入一个新单词时,之前的请求都会被取消。我的问题是,即使我使用取消令牌 (https://github.com/axios/axios#cancellation) 取消了上一个请求,php 脚本仍在运行。
问题:如果 axios 请求已被取消,我如何停止 php 脚本?
我的 Vuejs 代码
fetchData(query) {
if(cancel != undefined)
cancel(); // cancel the previous request
axios.get("http://sample-link", {
cancelToken: new CancelToken(function executor(c) {
cancel = c;
}),
params: {
query : query
}
}).then(response => {
console.log(response);
}).catch(error => {console.log(error.message)})
}
...
我的 php 代码
class SearchController extends Controller {
public function Search(Request $request)
{
$query = $request->input('query');
$accounts = Accounts::search($query, null, true, true)->get();
return response()->json($accounts);
}
...
}
【问题讨论】:
-
您不能在调用服务器之前稍等片刻吗?您可以使用 setTimeout 函数来实现这一点,也可以使用 lodash debounce 函数。