Skip to content

Commit 23e0c19

Browse files
leeyehwangxiao
authored andcommitted
fix: prevent getServerURLPromise from being resolved more then once (#330)
1 parent dafc245 commit 23e0c19

File tree

2 files changed

+9
-5
lines changed

2 files changed

+9
-5
lines changed

src/promise.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -312,8 +312,8 @@ _.extend(Promise.prototype, /** @lends AV.Promise.prototype */ {
312312
*/
313313
resolve: function(result) {
314314
if (this._resolved || this._rejected) {
315-
throw "A promise was resolved even though it had already been " +
316-
(this._resolved ? "resolved" : "rejected") + ".";
315+
throw new Error("A promise was resolved even though it had already been " +
316+
(this._resolved ? "resolved" : "rejected") + ".");
317317
}
318318
this._resolved = true;
319319
this._result = arguments;
@@ -352,8 +352,8 @@ _.extend(Promise.prototype, /** @lends AV.Promise.prototype */ {
352352
*/
353353
reject: function(error) {
354354
if (this._resolved || this._rejected) {
355-
throw "A promise was rejected even though it had already been " +
356-
(this._resolved ? "resolved" : "rejected") + ".";
355+
throw new Promise("A promise was rejected even though it had already been " +
356+
(this._resolved ? "resolved" : "rejected") + ".");
357357
}
358358
this._rejected = true;
359359
this._error = error;

src/request.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ const AVError = require('./error');
1212
const AV = require('./av');
1313
const _ = require('underscore');
1414

15-
const getServerURLPromise = new AVPromise();
15+
let getServerURLPromise;
1616

1717
// 服务器请求的节点 host
1818
const API_HOST = {
@@ -251,6 +251,7 @@ const refreshServerUrlByRouter = () => {
251251
};
252252

253253
const setServerUrlByRegion = (region = 'cn') => {
254+
getServerURLPromise = new AVPromise();
254255
// 如果用户在 init 之前设置了 APIServerURL,则跳过请求 router
255256
if (AV._config.APIServerURL) {
256257
getServerURLPromise.resolve();
@@ -294,6 +295,9 @@ const AVRequest = (route, className, objectId, method, dataObject = {}, sessionT
294295

295296
checkRouter(route);
296297

298+
if (!getServerURLPromise) {
299+
return AVPromise.error(new Error('Not initialized'));
300+
}
297301
return getServerURLPromise.then(() => {
298302
const apiURL = createApiUrl(route, className, objectId, method, dataObject);
299303
return setHeaders(sessionToken).then(

0 commit comments

Comments
 (0)