1
1
/*!
2
2
* js-data-localstorage
3
- * @version 2.0.0-beta.3 - Homepage <http://www.js-data.io/docs/dslocalstorageadapter>
3
+ * @version 2.0.0-beta.4 - Homepage <http://www.js-data.io/docs/dslocalstorageadapter>
4
4
* @author Jason Dobry <[email protected] >
5
5
* @copyright (c) 2014-2015 Jason Dobry
6
6
* @license MIT <https://github.com/js-data/js-data-localstorage/blob/master/LICENSE>
@@ -107,34 +107,39 @@ return /******/ (function(modules) { // webpackBootstrap
107
107
Defaults . prototype . basePath = '' ;
108
108
109
109
var queue = [ ] ;
110
+ var taskInProcess = false ;
110
111
111
112
function enqueue ( task ) {
112
113
queue . push ( task ) ;
113
114
}
114
115
115
116
function dequeue ( ) {
116
- if ( queue . length ) {
117
- var task = queue . shift ( ) ;
118
- task ( ) ;
117
+ if ( queue . length && ! taskInProcess ) {
118
+ taskInProcess = true ;
119
+ queue [ 0 ] ( ) ;
119
120
}
120
121
}
121
122
122
123
function queueTask ( task ) {
123
- if ( queue . length ) {
124
+ if ( ! queue . length ) {
124
125
enqueue ( task ) ;
126
+ dequeue ( ) ;
125
127
} else {
126
- task ( ) ;
128
+ enqueue ( task ) ;
127
129
}
128
130
}
129
131
130
132
function createTask ( fn ) {
131
133
return new DSUtils . Promise ( fn ) . then ( function ( result ) {
132
- setTimeout ( function ( ) {
133
- if ( queue . length ) {
134
- dequeue ( ) ;
135
- }
136
- } , 0 ) ;
134
+ taskInProcess = false ;
135
+ queue . shift ( ) ;
136
+ setTimeout ( dequeue , 0 ) ;
137
137
return result ;
138
+ } , function ( err ) {
139
+ taskInProcess = false ;
140
+ queue . shift ( ) ;
141
+ setTimeout ( dequeue , 0 ) ;
142
+ return DSUtils . Promise . reject ( err ) ;
138
143
} ) ;
139
144
}
140
145
@@ -227,7 +232,7 @@ return /******/ (function(modules) { // webpackBootstrap
227
232
queueTask ( function ( ) {
228
233
_this . GET ( _this . getIdPath ( resourceConfig , options || { } , id ) ) . then ( function ( item ) {
229
234
return ! item ? reject ( new Error ( 'Not Found!' ) ) : resolve ( item ) ;
230
- } ) ;
235
+ } , reject ) ;
231
236
} ) ;
232
237
} ) ;
233
238
}
@@ -296,16 +301,12 @@ return /******/ (function(modules) { // webpackBootstrap
296
301
value : function updateAll ( resourceConfig , attrs , params , options ) {
297
302
var _this5 = this ;
298
303
299
- return createTask ( function ( resolve , reject ) {
300
- queueTask ( function ( ) {
301
- _this5 . findAll ( resourceConfig , params , options ) . then ( function ( items ) {
302
- var tasks = [ ] ;
303
- forEach ( items , function ( item ) {
304
- return tasks . push ( _this5 . update ( resourceConfig , item [ resourceConfig . idAttribute ] , _omit2 [ 'default' ] ( attrs , resourceConfig . relationFields || [ ] ) , options ) ) ;
305
- } ) ;
306
- resolve ( DSUtils . Promise . all ( tasks ) ) ;
307
- } ) [ 'catch' ] ( reject ) ;
304
+ return this . findAll ( resourceConfig , params , options ) . then ( function ( items ) {
305
+ var tasks = [ ] ;
306
+ forEach ( items , function ( item ) {
307
+ return tasks . push ( _this5 . update ( resourceConfig , item [ resourceConfig . idAttribute ] , _omit2 [ 'default' ] ( attrs , resourceConfig . relationFields || [ ] ) , options ) ) ;
308
308
} ) ;
309
+ return DSUtils . Promise . all ( tasks ) ;
309
310
} ) ;
310
311
}
311
312
} , {
@@ -318,7 +319,9 @@ return /******/ (function(modules) { // webpackBootstrap
318
319
options = options || { } ;
319
320
_this6 . DEL ( _this6 . getIdPath ( resourceConfig , options , id ) ) . then ( function ( ) {
320
321
return _this6 . removeId ( id , resourceConfig . name , options ) ;
321
- } ) . then ( resolve , reject ) ;
322
+ } ) . then ( function ( ) {
323
+ return resolve ( null ) ;
324
+ } , reject ) ;
322
325
} ) ;
323
326
} ) ;
324
327
}
@@ -327,16 +330,12 @@ return /******/ (function(modules) { // webpackBootstrap
327
330
value : function destroyAll ( resourceConfig , params , options ) {
328
331
var _this7 = this ;
329
332
330
- return createTask ( function ( resolve , reject ) {
331
- queueTask ( function ( ) {
332
- _this7 . findAll ( resourceConfig , params , options ) . then ( function ( items ) {
333
- var tasks = [ ] ;
334
- forEach ( items , function ( item ) {
335
- return tasks . push ( _this7 . destroy ( resourceConfig , item [ resourceConfig . idAttribute ] , options ) ) ;
336
- } ) ;
337
- resolve ( DSUtils . Promise . all ( tasks ) ) ;
338
- } ) [ 'catch' ] ( reject ) ;
333
+ return this . findAll ( resourceConfig , params , options ) . then ( function ( items ) {
334
+ var tasks = [ ] ;
335
+ forEach ( items , function ( item ) {
336
+ return tasks . push ( _this7 . destroy ( resourceConfig , item [ resourceConfig . idAttribute ] , options ) ) ;
339
337
} ) ;
338
+ return DSUtils . Promise . all ( tasks ) ;
340
339
} ) ;
341
340
}
342
341
} ] ) ;
0 commit comments