Rxjs map only first emition
Is there an operator that can let me map just the first emit ?
something like
import { from } from 'rxjs';
import { mapFirst } from 'rxjs/operators';
const source = from([1, 2, 3, 4, 5]);
const example = source.pipe(mapFirst(val => val + 10));
//output: 11,2, 3, 4, 5
rxjs
add a comment |
Is there an operator that can let me map just the first emit ?
something like
import { from } from 'rxjs';
import { mapFirst } from 'rxjs/operators';
const source = from([1, 2, 3, 4, 5]);
const example = source.pipe(mapFirst(val => val + 10));
//output: 11,2, 3, 4, 5
rxjs
2
Check the indexmap((value, index) => { if (index === 0) ... }
– cartant
Nov 21 '18 at 2:04
@cartant thanks but I knew I could do this, I was hoping for some home baked operator, for the sake of a nicer syntax :)
– Rachid Oussanaa
Nov 21 '18 at 9:37
add a comment |
Is there an operator that can let me map just the first emit ?
something like
import { from } from 'rxjs';
import { mapFirst } from 'rxjs/operators';
const source = from([1, 2, 3, 4, 5]);
const example = source.pipe(mapFirst(val => val + 10));
//output: 11,2, 3, 4, 5
rxjs
Is there an operator that can let me map just the first emit ?
something like
import { from } from 'rxjs';
import { mapFirst } from 'rxjs/operators';
const source = from([1, 2, 3, 4, 5]);
const example = source.pipe(mapFirst(val => val + 10));
//output: 11,2, 3, 4, 5
rxjs
rxjs
asked Nov 21 '18 at 0:43
Rachid OussanaaRachid Oussanaa
4,73183862
4,73183862
2
Check the indexmap((value, index) => { if (index === 0) ... }
– cartant
Nov 21 '18 at 2:04
@cartant thanks but I knew I could do this, I was hoping for some home baked operator, for the sake of a nicer syntax :)
– Rachid Oussanaa
Nov 21 '18 at 9:37
add a comment |
2
Check the indexmap((value, index) => { if (index === 0) ... }
– cartant
Nov 21 '18 at 2:04
@cartant thanks but I knew I could do this, I was hoping for some home baked operator, for the sake of a nicer syntax :)
– Rachid Oussanaa
Nov 21 '18 at 9:37
2
2
Check the index
map((value, index) => { if (index === 0) ... }
– cartant
Nov 21 '18 at 2:04
Check the index
map((value, index) => { if (index === 0) ... }
– cartant
Nov 21 '18 at 2:04
@cartant thanks but I knew I could do this, I was hoping for some home baked operator, for the sake of a nicer syntax :)
– Rachid Oussanaa
Nov 21 '18 at 9:37
@cartant thanks but I knew I could do this, I was hoping for some home baked operator, for the sake of a nicer syntax :)
– Rachid Oussanaa
Nov 21 '18 at 9:37
add a comment |
2 Answers
2
active
oldest
votes
If you want to write a user-land operator to do it:
import { OperatorFunction } from "rxjs";
import { map } from "rxjs/operators";
function mapFirst<T, R>(selector: (value: T) => R): OperatorFunction<T, T | R> {
return map<T, T | R>((value, index) => (index === 0) ? selector(value) : value);
}
And you'd use it as you have in your question.
add a comment |
Use first
operator or take(1)
const source = from([1, 2, 3, 4, 5]);
const example = source.pipe(first());
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53403746%2frxjs-map-only-first-emition%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
If you want to write a user-land operator to do it:
import { OperatorFunction } from "rxjs";
import { map } from "rxjs/operators";
function mapFirst<T, R>(selector: (value: T) => R): OperatorFunction<T, T | R> {
return map<T, T | R>((value, index) => (index === 0) ? selector(value) : value);
}
And you'd use it as you have in your question.
add a comment |
If you want to write a user-land operator to do it:
import { OperatorFunction } from "rxjs";
import { map } from "rxjs/operators";
function mapFirst<T, R>(selector: (value: T) => R): OperatorFunction<T, T | R> {
return map<T, T | R>((value, index) => (index === 0) ? selector(value) : value);
}
And you'd use it as you have in your question.
add a comment |
If you want to write a user-land operator to do it:
import { OperatorFunction } from "rxjs";
import { map } from "rxjs/operators";
function mapFirst<T, R>(selector: (value: T) => R): OperatorFunction<T, T | R> {
return map<T, T | R>((value, index) => (index === 0) ? selector(value) : value);
}
And you'd use it as you have in your question.
If you want to write a user-land operator to do it:
import { OperatorFunction } from "rxjs";
import { map } from "rxjs/operators";
function mapFirst<T, R>(selector: (value: T) => R): OperatorFunction<T, T | R> {
return map<T, T | R>((value, index) => (index === 0) ? selector(value) : value);
}
And you'd use it as you have in your question.
answered Nov 21 '18 at 9:51
cartantcartant
37.6k785118
37.6k785118
add a comment |
add a comment |
Use first
operator or take(1)
const source = from([1, 2, 3, 4, 5]);
const example = source.pipe(first());
add a comment |
Use first
operator or take(1)
const source = from([1, 2, 3, 4, 5]);
const example = source.pipe(first());
add a comment |
Use first
operator or take(1)
const source = from([1, 2, 3, 4, 5]);
const example = source.pipe(first());
Use first
operator or take(1)
const source = from([1, 2, 3, 4, 5]);
const example = source.pipe(first());
answered Nov 21 '18 at 9:19
Fan CheungFan Cheung
2,8621419
2,8621419
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53403746%2frxjs-map-only-first-emition%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
2
Check the index
map((value, index) => { if (index === 0) ... }
– cartant
Nov 21 '18 at 2:04
@cartant thanks but I knew I could do this, I was hoping for some home baked operator, for the sake of a nicer syntax :)
– Rachid Oussanaa
Nov 21 '18 at 9:37