Так что мне очень сложно выяснить, как создать функцию, которая будет работать для различных запросов или различных запросов на битву.Создание обратного вызова для обещания
Рассмотрите это обещание, которое превратит пустой массив вывода в возвращаемые данные запроса/обещания.
//userKeys is an array with my 'queries'
Promise.all(userKeys.map(function(key) {
return database.child(key).once("value") //Returns a promise
})).then(function(respond) {
userData = respond;
});
Это прекрасно работает. Поэтому я подумал, что создам функцию, которая будет делать это только для разных запросов, и именно там я просто зашел в тупик.
Так что я просто обернуть мой предыдущий код в функции
function query(keys, array) {
return Promise.all(keys.map(function(key) {
return ref.child(key).once("value")
})).then(function(respond) {
array = respond; //This won't work
return respond;
});
}
Так что я попытался возвращенная обещание, которое я могу тогда сделать это на
someQuery = query(queryKeys);
someQuery.then(function(data){ //Manual written array to store data here
queryResults = data})
мне еще нужно хранить эти данные в массив программным способом, который я просто не могу понять.
Так оглянитесь на мой второй фрагмент кода выше (Моя функция) Второй параметр должен был быть массивом, который я хочу передать, массив по моему выбору, который будет заполнен данными, т. Если я еще больше упрощу свою функцию, я начну видеть странные вещи.
output = [];
function modify(arrayName) {
var data = ["1", "2", "3", "4"];
arrayName = data; //Doesnt work
arrayName = data.slice() //Doesnt work
arrayName.push(data) //Works, but I don't want to push I want to copy
}
modify(output); //Output will stay empty
Почему мой выходной массив остается пустым? Это нормально? Также, когда я консоль журнала arrayName, он возвращает объект, когда его явно массив. Может кто-то прокомментировать?
У меня возникло ощущение, что в конечном итоге мне придется написать обещание вручную для каждого запроса, который я буду делать в будущем, мне просто интересно, эффективнее ли это сделать.
Но, пожалуйста, не надо. Это не значит, что обещания должны использоваться. –
@MadaraUchiha Вы имеете в виду первую часть ответа, с сращиванием и применить? – Nickolay
@MadaraUchiha В конце концов, как только данные будут загружены, они будут отображаться в виде с помощью углового джойстика. Так что же Николай делает не так?А Nickolay, что-то не так с этим, я должен был бы сделать это за каждое обещание отдельно. Я не могу придумать способ сделать это программно, я знаю, что я не получу никакой обратной связи, но я не думаю, что мне это нужно, потому что я буду показывать ее в своем представлении, как только она будет загружена. – Abdel