mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-02-27 17:11:14 +01:00
refactor: remove nested promise
This commit is contained in:
@@ -7,34 +7,32 @@ import { confirm } from 'bootbox';
|
|||||||
|
|
||||||
const baseUrl = config.relative_path + '/api/v3';
|
const baseUrl = config.relative_path + '/api/v3';
|
||||||
|
|
||||||
function call(options, callback) {
|
async function call(options, callback) {
|
||||||
options.url = options.url.startsWith('/api') ?
|
options.url = options.url.startsWith('/api') ?
|
||||||
config.relative_path + options.url :
|
config.relative_path + options.url :
|
||||||
baseUrl + options.url;
|
baseUrl + options.url;
|
||||||
|
|
||||||
if (typeof callback === 'function') {
|
if (typeof callback === 'function') {
|
||||||
xhr(options, callback);
|
xhr(options).then(result => callback(null, result), err => callback(err));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Promise((resolve, reject) => {
|
try {
|
||||||
xhr(options, function (err, data) {
|
const result = await xhr(options);
|
||||||
if (err) {
|
return result;
|
||||||
if (err.message === 'A valid login session was not found. Please log in and try again.') {
|
} catch (err) {
|
||||||
return confirm('[[error:api.reauth-required]]', (ok) => {
|
if (err.message === 'A valid login session was not found. Please log in and try again.') {
|
||||||
if (ok) {
|
return confirm('[[error:api.reauth-required]]', (ok) => {
|
||||||
ajaxify.go('login');
|
if (ok) {
|
||||||
}
|
ajaxify.go('login');
|
||||||
});
|
|
||||||
}
|
}
|
||||||
return reject(err);
|
});
|
||||||
}
|
}
|
||||||
resolve(data);
|
throw err;
|
||||||
});
|
}
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async function xhr_async(options) {
|
async function xhr(options) {
|
||||||
// Normalize body based on type
|
// Normalize body based on type
|
||||||
const { url } = options;
|
const { url } = options;
|
||||||
delete options.url;
|
delete options.url;
|
||||||
@@ -87,12 +85,6 @@ async function xhr_async(options) {
|
|||||||
response;
|
response;
|
||||||
}
|
}
|
||||||
|
|
||||||
function xhr(options, callback) {
|
|
||||||
// then().catch() is not correct here because callback() is called twice when the first then() throws an exception.
|
|
||||||
// pass onfulfilled and onrejected here, as two parameters of Promise.prototype.then()
|
|
||||||
xhr_async(options).then(result => callback(null, result), error => callback(error));
|
|
||||||
}
|
|
||||||
|
|
||||||
export function get(route, data, onSuccess) {
|
export function get(route, data, onSuccess) {
|
||||||
return call({
|
return call({
|
||||||
url: route + (data && Object.keys(data).length ? ('?' + $.param(data)) : ''),
|
url: route + (data && Object.keys(data).length ? ('?' + $.param(data)) : ''),
|
||||||
|
|||||||
Reference in New Issue
Block a user