Получите поток данных сразу с помощью сервисного вызоваC#

Место общения программистов C#
Ответить
Anonymous
 Получите поток данных сразу с помощью сервисного вызова

Сообщение Anonymous »

У меня есть внутренний контроллер на C#, который принимает два параметра для возврата данных для разрешения пользователя. Это работает для одного пользователя одновременно, теперь у меня есть сценарий использования одного и того же контроллера для одновременного возврата данных нескольким пользователям. Примечание. Мне придется использовать тот же контроллер, и в настоящее время в серверной части невозможно внести какие-либо изменения. Контроллер возвращает список с необходимыми разрешениями для пользователя в данный момент.
Без долгих раздумий и задержек я сделал следующее, что, кажется, работает, но не получил набор результатов за один раз. Вот фрагмент кода, который у меня есть:

Код: Выделить всё

//This works selecting a drop down box value
filterUsers() {
this.filteredUsers.items = [...this.dataSrc.items.filter(x => this.filterUsersFunc(x, this.filterState))]; //Initial values are here when drop down box selection done
this.filteredUsers.total = this.filteredUsers.items.length;

console.log("Filtered Users below:");
console.log(this.filteredUsers.items);

//Depending upon initial values and iterating them, like to have user permission for multiple users
for (var i = 0; i < this.filteredUsers.items.length; i++) {
this.userId = 0;
console.log(this.filteredUsers.items[i].id);
this.userId = this.filteredUsers.items[i].id;

this.userService
.getExploreUserPermissionSettings(this.filteredUsers.items[i]?.id, this.filteredUsers.items[i]?.enterpriseId) //Passing parameters from the loop
.pipe(finalize(() => this.busy = false))
.subscribe((response) => {

console.log("User Ids:");
console.log(this.filteredUsers.items[i]?.id);

let obj = {} as ExploreUserPermissionSettingItemArr; //Then trying to save them in an object
obj.userId = this.userId; //Even the user id doesn't get changed in each iteration, it only takes the last user id each time
obj.newArr = response.data.included;

console.log("In For Loop:");
console.log(obj);

this.userPermissionsIncluded.push(obj); //Finally adding them to an array
});
}

console.log("User Permissions Below:");
console.log(this.userPermissionsIncluded); //Lastly trying to see the result set
}
Интересно то, что последний оператор console.log(this.userPermissionsIncluded); занимает первое место в журнале консоли браузера, а затем получает значения в потоке как как показано на снимке экрана:
Изображение

Я знаю, я делаю здесь что-то не так. Но есть ли способ получить поток за один раз и сразу сохранить его в массиве? Допустим, у меня есть 20 пользователей, участвующих в фильтрации, и эти 20 пользователей должны находиться в массиве, а не повторяться один за другим, как сейчас, как показано на снимке экрана.
Еще одна вещь. получите идентификаторы пользователей из цикла for, и он правильно передаст идентификатор контроллеру. Но когда я сохраняю его в объект obj.userId = this.userId;, он устанавливает только последний идентификатор пользователя из цикла, как вы можете видеть на снимке экрана.

Подробнее здесь: https://stackoverflow.com/questions/792 ... rvice-call
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»