我怎样才能防止我的数组变得混乱? (AngularJs)
How can I prevent my array from becoming disordered? (AngularJs)
我通过 "sort" 函数传递了一系列对象并对其进行了正确排序,但是通过使用 $d.resolve(myList) 在 angularjs 中发送承诺,似乎订单再次丢失。我怎样才能防止这种情况发生?
var deferred = $q.defer();
var requests = $q.all([getValue1(obj), getValue2(obj)]);
requests.then(function (values) {
var toOrder = _.union($scope.values, values[0], values[1]);
/*
This are values
[
{ name: '11A.1C.8', value: 21 },
{ name: 'F1.8C.10', value: 37 },
{ name: '11A.2C.14', value: 45 },
{ name: '11A.1C.15', value: -12 },
{ name: '99R.963/5C-134-23' },
{ name: '11A.2C.18', value: 37 },
{ name: '11A.2C.17', value: 37 },
{ name: '11A.1C.9', value: 37 },
{ name: 'AAA.BBB.CCC', value: 37 },
{ name: 'F1.8C.10-1', value: 37 },
{ name: '99R.963/5C-134-23-94', value: 37 }
]*/
deferred.resolve(sort(toOrder));
});
function sort(lista) {
lista.sort(function (a, b) {
if (a.name > b.name) { return 1; }
if (a.name < b.name) { return -1; }
return 0;
});
return lista;
}
一切正常,直到将结果发送到 "resolve"。那是订单再次丢失的时候。
我需要帮助!
在使用 .then
块时避免使用 $q.defer
。相反 return 值来创建新的承诺:
var requests = $q.all([getValue1(obj), getValue2(obj)]);
var newPromise = requests.then(function (values) {
var sortedValues = sort(values);
return sortedValues;
});
array.sort method sorts in-place。排序前复制一份是明智的:
function sort(lista) {
var copiedLista = lista.concat();
copiedLista.sort(function (a, b) {
if (a.name > b.name) { return 1; }
if (a.name < b.name) { return -1; }
return 0;
});
return copiedLista;
}
然后从新的承诺中提取值:
newPromise.then(function(sortedValues) {
console.log(sortedValues);
};
我通过 "sort" 函数传递了一系列对象并对其进行了正确排序,但是通过使用 $d.resolve(myList) 在 angularjs 中发送承诺,似乎订单再次丢失。我怎样才能防止这种情况发生?
var deferred = $q.defer();
var requests = $q.all([getValue1(obj), getValue2(obj)]);
requests.then(function (values) {
var toOrder = _.union($scope.values, values[0], values[1]);
/*
This are values
[
{ name: '11A.1C.8', value: 21 },
{ name: 'F1.8C.10', value: 37 },
{ name: '11A.2C.14', value: 45 },
{ name: '11A.1C.15', value: -12 },
{ name: '99R.963/5C-134-23' },
{ name: '11A.2C.18', value: 37 },
{ name: '11A.2C.17', value: 37 },
{ name: '11A.1C.9', value: 37 },
{ name: 'AAA.BBB.CCC', value: 37 },
{ name: 'F1.8C.10-1', value: 37 },
{ name: '99R.963/5C-134-23-94', value: 37 }
]*/
deferred.resolve(sort(toOrder));
});
function sort(lista) {
lista.sort(function (a, b) {
if (a.name > b.name) { return 1; }
if (a.name < b.name) { return -1; }
return 0;
});
return lista;
}
一切正常,直到将结果发送到 "resolve"。那是订单再次丢失的时候。 我需要帮助!
在使用 .then
块时避免使用 $q.defer
。相反 return 值来创建新的承诺:
var requests = $q.all([getValue1(obj), getValue2(obj)]);
var newPromise = requests.then(function (values) {
var sortedValues = sort(values);
return sortedValues;
});
array.sort method sorts in-place。排序前复制一份是明智的:
function sort(lista) {
var copiedLista = lista.concat();
copiedLista.sort(function (a, b) {
if (a.name > b.name) { return 1; }
if (a.name < b.name) { return -1; }
return 0;
});
return copiedLista;
}
然后从新的承诺中提取值:
newPromise.then(function(sortedValues) {
console.log(sortedValues);
};