|
|
@@ -16,9 +16,11 @@ const fetchHeaders = {
|
|
|
*
|
|
|
* @param url URL of RESTful api to call
|
|
|
* @param options the fetch() options
|
|
|
+ * @param complete Promise resolve callback
|
|
|
+ * @param error Promise reject callback
|
|
|
* @returns Object {Promise, signal: AbortController}
|
|
|
*/
|
|
|
-export function AjaxReq(url, options) {
|
|
|
+export function AjaxReq(url, options, complete, error) {
|
|
|
let fetchSignal = new AbortController();
|
|
|
let defaults = {
|
|
|
headers: fetchHeaders,
|
|
|
@@ -33,16 +35,21 @@ export function AjaxReq(url, options) {
|
|
|
return resp.json();
|
|
|
else
|
|
|
return Promise.reject(resp);
|
|
|
+ })
|
|
|
+ .catch(err => {
|
|
|
+ if (err.name === 'AbortError')
|
|
|
+ return;
|
|
|
+ if (err.url !== undefined)
|
|
|
+ toastr.error(err.url, `${err.status} (${err.statusText})`);
|
|
|
+ else
|
|
|
+ toastr.error(err);
|
|
|
});
|
|
|
|
|
|
// Add some properties to return value
|
|
|
- let ret = {};
|
|
|
- Object.assign(ret, {
|
|
|
+ return {
|
|
|
fetchPromise: () => fetchPromise,
|
|
|
abort: function () {
|
|
|
fetchSignal.abort()
|
|
|
}
|
|
|
- });
|
|
|
-
|
|
|
- return ret;
|
|
|
+ };
|
|
|
}
|