Если я вас правильно понимаю, то думаю, что это решение. Ваша проблема была с первым map
, который не будет выполнять внутреннюю подписку, а просто преобразует поток в Observables of Observables, который, кажется, не соответствует вашим ожиданиям. Вместо этого я использовал mergeMap
там.
Внутри from
я использовал concatMap, чтобы заставить каждое излучение из first
и second
происходить по порядку и ждать завершения одного, прежде чем начнется другое. Я также настроил функции postToEndpoint
, которые возвращают Observables, чтобы они были ближе к тому, как ваш реальный код, вероятно, будет выглядеть.
StackBlitz Демо
код:
import { mergeMap, concatMap, delay, tap, catchError, toArray } from 'rxjs/operators';
import { merge, of, from, concat, throwError } from 'rxjs';
const single = "name";
const first = ["abc", "def"];
const second = of("ghi", "jkl", "mno");
const postToEndpoint1$ = photo => of(photo).pipe(
tap(data => console.log('start of postTo1 for photo:', photo)),
delay(5000),
tap(data => console.log('end of postTo1 for photo:', photo))
);
const postToEndpoint2$ = video => of(video).pipe(
tap(data => console.log('start of postTo2 for video:', video)),
delay(5000),
tap(data => console.log('end of postTo2 for video:', video))
);
of(single).pipe(
tap(val => console.log(`initial emit:${val}`)),
mergeMap(claim =>
merge(
from(first).pipe(concatMap(postToEndpoint1$)),
from(second).pipe(concatMap(postToEndpoint2$))
)
),
toArray(),
catchError(error => {
console.log("error");
return throwError(error);
})
).subscribe(val => console.log(`final:`, val));
Надеюсь, это поможет.
<button runat="server"
style="background-image:url('/Content/Img/stackoverflow-logo-250.png')" >
your text here<br/>and some more<br/><br/> and some more ....
</button>
Вы не можете сделать этого с ImageButton
.
Однако можно использовать простое Button
, установите текст и добавьте фоновое изображение (bluebutton.gif) использование CSS для достижения желаемого эффекта.
Я не думаю, что можно записать текст в управление ImageButton ASP.NET. Можно генерировать изображение на лету, если это - то, в чем Вы нуждаетесь и пишете текст из своего кода позади, но это будет слишком сложно, используйте нормальную кнопку с CSS вместо этого, если Ваше изображение не может быть сгенерировано CSS.
You can also do this using an asp:Label, like this:
<style type="text/css">
.faux-button
{
cursor:pointer;
}
</style>
<div class="faux-button">
<asp:ImageButton ID="ibtnAddUser"
runat="server"
ImageUrl="~/Images/add.gif"
AlternateText="Add a user image" />
<asp:Label ID="lblAddUser"
runat="server"
Text="Add User"
AssociatedControlID="imgClick" />
</div>