Skip to content

Commit 18de9f0

Browse files
author
PinkyJie
committed
refactor promise
1. do not use success/error callback for $http cause they don't follow the promise standard 2. do not use defered API cause it's a duplicated promise referenced link: angular/angular.js#10508 http://pouchdb.com/2015/05/18/we-have-a-problem-with-promises.html https://github.com/petkaantonov/bluebird/wiki/Promise-anti-patterns#the-deferred-anti-pattern
1 parent 239f412 commit 18de9f0

File tree

5 files changed

+102
-126
lines changed

5 files changed

+102
-126
lines changed

app/templates/client/source/app/core/resolve.service.js

+2-10
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,11 @@
1515
///////////
1616

1717
function login () {
18-
var d = $q.defer();
19-
userAPI.checkLoggedInStatus()
20-
.then(success)
18+
return userAPI.checkLoggedInStatus()
2119
.catch(error);
2220

23-
return d.promise;
24-
25-
function success () {
26-
d.resolve();
27-
}
28-
2921
function error () {
30-
d.reject('requireLogin');
22+
return $q.reject('requireLogin');
3123
}
3224
}
3325
}

app/templates/client/source/app/core/user.service.js

+42-47
Original file line numberDiff line numberDiff line change
@@ -28,79 +28,75 @@
2828
}
2929

3030
function checkLoggedInStatus () {
31-
var d = $q.defer();
32-
$http.get('api/user/loginstatus', {ignoreLoadingBar: true})
33-
.success(success)
34-
.error(fail);
35-
return d.promise;
36-
37-
function success (response, status) {
38-
if (status === 200 && response.code === 0) {
39-
_setUser(response.result.user);
40-
$rootScope.$broadcast(Event.AUTH_SESSION_VALID, response.result.user);
41-
d.resolve(response.result.user);
31+
return $http.get('api/user/loginstatus', {ignoreLoadingBar: true})
32+
.then(success)
33+
.catch(fail);
34+
35+
function success (response) {
36+
var data = response.data;
37+
if (response.status === 200 && data.code === 0) {
38+
_setUser(data.result.user);
39+
$rootScope.$broadcast(Event.AUTH_SESSION_VALID, data.result.user);
40+
return data.result.user;
4241
} else {
4342
_clearUser();
44-
d.reject();
43+
return $q.reject();
4544
}
4645
}
4746

4847
function fail () {
4948
_clearUser();
50-
d.reject();
49+
return $q.reject();
5150
}
5251
}
5352

5453
function login (email, password) {
55-
var d = $q.defer();
5654
var req = {
5755
email: email,
5856
password: password
5957
};
60-
$http.post('api/user/login', req)
61-
.success(success)
62-
.error(fail);
63-
return d.promise;
64-
65-
function success (response, status) {
66-
if (status === 200 && response.code === 0) {
67-
_setUser(response.result.user);
68-
$rootScope.$broadcast(Event.AUTH_LOGIN, response.result.user);
69-
d.resolve(response.result.user);
58+
return $http.post('api/user/login', req)
59+
.then(success)
60+
.catch(fail);
61+
62+
function success (response) {
63+
var data = response.data;
64+
if (response.status === 200 && data.code === 0) {
65+
_setUser(data.result.user);
66+
$rootScope.$broadcast(Event.AUTH_LOGIN, data.result.user);
67+
return data.result.user;
7068
} else {
7169
_clearUser();
72-
d.reject(response.message);
70+
return $q.reject(data.message);
7371
}
7472
}
7573

7674
function fail () {
7775
_clearUser();
78-
d.reject('$SERVER');
76+
return $q.reject('$SERVER');
7977
}
8078

8179
}
8280

8381
function logout () {
84-
var d = $q.defer();
85-
$http.post('api/user/logout')
82+
return $http.post('api/user/logout')
8683
.success(success)
8784
.error(fail);
88-
return d.promise;
8985

90-
function success (response, status) {
91-
if (status === 200 && response.code === 0) {
86+
function success (response) {
87+
var data = response.data;
88+
_clearUser();
89+
if (response.status === 200 && data.code === 0) {
9290
$rootScope.$broadcast(Event.AUTH_LOGOUT);
93-
d.resolve();
91+
return;
9492
} else {
95-
d.reject();
93+
return $q.reject();
9694
}
97-
_clearUser();
98-
9995
}
10096

10197
function fail () {
10298
_clearUser();
103-
d.reject('$SERVER');
99+
return $q.reject('$SERVER');
104100
}
105101
}
106102

@@ -109,22 +105,21 @@
109105
}
110106

111107
function getProductSummary () {
112-
var d = $q.defer();
113-
$http.get('api/user/products')
114-
.success(success)
115-
.error(fail);
116-
return d.promise;
117-
118-
function success (response, status) {
119-
if (status === 200 && response.code === 0) {
120-
d.resolve(response.result.summary);
108+
return $http.get('api/user/products')
109+
.then(success)
110+
.catch(fail);
111+
112+
function success (response) {
113+
var data = response.data;
114+
if (response.status === 200 && data.code === 0) {
115+
return data.result.summary;
121116
} else {
122-
d.reject(response.message);
117+
return $q.reject(data.message);
123118
}
124119
}
125120

126121
function fail () {
127-
d.reject('$SERVER');
122+
return $q.reject('$SERVER');
128123
}
129124
}
130125

app/templates/client/source/app/phone/phone.add.controller.js

+4-7
Original file line numberDiff line numberDiff line change
@@ -24,23 +24,20 @@
2424
}
2525

2626
function addNewPhone (phone) {
27-
var d = $q.defer();
28-
phoneAPI.addNewPhone(phone)
27+
// return promise here to let the phone form controller know the response status
28+
return phoneAPI.addNewPhone(phone)
2929
.then(success)
3030
.catch(error);
31-
// return promise here to let the phone form controller know
32-
// the response status
33-
return d.promise;
3431

3532
function success (data) {
3633
$state.go('root.phone');
37-
d.resolve();
34+
return;
3835
}
3936

4037
function error (reason) {
4138
var message = ajaxErrorHanlder.getMessage(reason);
4239
LxNotificationService.alert('Add phone error', message, 'OK');
43-
d.reject();
40+
return $q.reject();
4441
}
4542
}
4643

app/templates/client/source/app/phone/phone.detail.controller.js

+4-7
Original file line numberDiff line numberDiff line change
@@ -48,26 +48,23 @@
4848
}
4949

5050
function updatePhone (phone) {
51-
var d = $q.defer();
52-
phoneAPI.updatePhone(phone.id, phone)
51+
// return promise here to let the phone form controller know the response status
52+
return phoneAPI.updatePhone(phone.id, phone)
5353
.then(success)
5454
.catch(error);
55-
// return promise here to let the phone form controller know
56-
// the response status
57-
return d.promise;
5855

5956
function success (data) {
6057
vm.state = 'view';
6158
vm.phone = data;
62-
d.resolve();
59+
return;
6360
}
6461

6562
function error (reason) {
6663
var message = ajaxErrorHanlder.getMessage(reason);
6764
LxNotificationService.alert('Update phone error', message, 'OK', function () {
6865
cancelUpdate();
6966
});
70-
d.reject();
67+
return $q.reject();
7168
}
7269
}
7370

app/templates/client/source/app/phone/phone.service.js

+50-55
Original file line numberDiff line numberDiff line change
@@ -21,108 +21,103 @@
2121
/////////////
2222

2323
function getPhones () {
24-
var d = $q.defer();
25-
$http.get('api/phones')
26-
.success(success)
27-
.error(fail);
28-
return d.promise;
29-
30-
function success (response, status) {
31-
if (status === 200 && response.code === 0) {
32-
d.resolve(response.result.phones);
24+
return $http.get('api/phones')
25+
.then(success)
26+
.catch(fail);
27+
28+
function success (response) {
29+
var data = response.data;
30+
if (response.status === 200 && data.code === 0) {
31+
return data.result.phones;
3332
} else {
34-
d.reject(response.message);
33+
return $q.reject(data.message);
3534
}
3635
}
3736

3837
function fail () {
39-
d.reject('$SERVER');
38+
return $q.reject('$SERVER');
4039
}
4140
}
4241

4342
function getPhoneDetail (id) {
44-
var d = $q.defer();
45-
$http.get('api/phones/' + id)
46-
.success(success)
47-
.error(fail);
48-
return d.promise;
49-
50-
function success (response, status) {
51-
if (status === 200 && response.code === 0) {
52-
d.resolve(response.result.phone);
43+
return $http.get('api/phones/' + id)
44+
.then(success)
45+
.catch(fail);
46+
47+
function success (response) {
48+
var data = response.data;
49+
if (response.status === 200 && data.code === 0) {
50+
return data.result.phone;
5351
} else {
54-
d.reject(response.message);
52+
return $q.reject(data.message);
5553
}
5654
}
5755

5856
function fail () {
59-
d.reject('$SERVER');
57+
return $q.reject('$SERVER');
6058
}
6159
}
6260

6361
function addNewPhone (phone) {
64-
var d = $q.defer();
6562
var req = {
6663
'phone': phone
6764
};
68-
$http.post('api/phones', req)
69-
.success(success)
70-
.error(fail);
71-
return d.promise;
72-
73-
function success (response, status) {
74-
if (status === 200 && response.code === 0) {
75-
d.resolve(response.result.phone);
65+
return $http.post('api/phones', req)
66+
.then(success)
67+
.catch(fail);
68+
69+
function success (response) {
70+
var data = response.data;
71+
if (response.status === 200 && data.code === 0) {
72+
return data.result.phone;
7673
} else {
77-
d.reject(response.message);
74+
return $q.reject(data.message);
7875
}
7976
}
8077

8178
function fail () {
82-
d.reject('$SERVER');
79+
return $q.reject('$SERVER');
8380
}
8481
}
8582

8683
function updatePhone (id, phone) {
87-
var d = $q.defer();
8884
var req = {
8985
'phone': phone
9086
};
91-
$http.put('api/phones/' + id, req)
92-
.success(success)
93-
.error(fail);
94-
return d.promise;
95-
96-
function success (response, status) {
97-
if (status === 200 && response.code === 0) {
98-
d.resolve(response.result.phone);
87+
return $http.put('api/phones/' + id, req)
88+
.then(success)
89+
.catch(fail);
90+
91+
function success (response) {
92+
var data = response.data;
93+
if (response.status === 200 && data.code === 0) {
94+
return data.result.phone;
9995
} else {
100-
d.reject(response.message);
96+
return $q.reject(data.message);
10197
}
10298
}
10399

104100
function fail () {
105-
d.reject('$SERVER');
101+
return $q.reject('$SERVER');
106102
}
107103
}
108104

109105
function removePhone (id) {
110-
var d = $q.defer();
111-
$http.delete('api/phones/' + id)
112-
.success(success)
113-
.error(fail);
114-
return d.promise;
115-
116-
function success (response, status) {
117-
if (status === 200 && response.code === 0) {
118-
d.resolve(response.result.phone);
106+
return $http.delete('api/phones/' + id)
107+
.then(success)
108+
.catch(fail);
109+
110+
function success (response) {
111+
var data = response.data;
112+
if (response.status === 200 && data.code === 0) {
113+
return data.result.phone;
119114
} else {
120-
d.reject(response.message);
115+
return $q.reject(data.message);
121116
}
122117
}
123118

124119
function fail () {
125-
d.reject('$SERVER');
120+
return $q.reject('$SERVER');
126121
}
127122
}
128123

0 commit comments

Comments
 (0)