Tools: Coding Challenge Practice - Question 107

Tools: Coding Challenge Practice - Question 107

The task is to implement the Observable from. from() creates an Observable from an array, an array-like object, a Promise, an iterable, or an observable-like object. It does not emit immediately and decides how to emit values based on the type of input. If the input type is an observable-like object, the values flow directly to the new observer. If the input type is a promise, if it resolves, it emits one value and calls complete(). If it rejects, it calls error() If the input type is iterable, each value is emitted via next in a synchronous loop. Call complete after iteration. If the input type is a non-iterable array-like object If the input is invalid, throw an error Templates let you quickly answer FAQs or store snippets for re-use. Are you sure you want to ? It will become hidden in your post, but will still be visible via the comment's permalink. as well , this person and/or CODE_BLOCK:
function from(input) { // your code here
} CODE_BLOCK:
function from(input) { // your code here
} CODE_BLOCK:
function from(input) { // your code here
} COMMAND_BLOCK:
if (input && typeof input.subscribe === "function") { return new Observable(observer => input.subscribe(observer));
} COMMAND_BLOCK:
if (input && typeof input.subscribe === "function") { return new Observable(observer => input.subscribe(observer));
} COMMAND_BLOCK:
if (input && typeof input.subscribe === "function") { return new Observable(observer => input.subscribe(observer));
} COMMAND_BLOCK:
if (input && typeof input.then === "function") { return new Observable(observer => { let cancelled = false; input.then( value => { if (!cancelled) { observer.next(value); observer.complete && observer.complete(); } }, err => !cancelled && observer.error && observer.error(err) ); return () => { cancelled = true; }; });
} COMMAND_BLOCK:
if (input && typeof input.then === "function") { return new Observable(observer => { let cancelled = false; input.then( value => { if (!cancelled) { observer.next(value); observer.complete && observer.complete(); } }, err => !cancelled && observer.error && observer.error(err) ); return () => { cancelled = true; }; });
} COMMAND_BLOCK:
if (input && typeof input.then === "function") { return new Observable(observer => { let cancelled = false; input.then( value => { if (!cancelled) { observer.next(value); observer.complete && observer.complete(); } }, err => !cancelled && observer.error && observer.error(err) ); return () => { cancelled = true; }; });
} COMMAND_BLOCK:
if (input && Symbol.iterator in Object(input)) { return new Observable(observer => { try { for (const item of input) { observer.next(item); } observer.complete && observer.complete(); } catch (err) { observer.error && observer.error(err); } });
} COMMAND_BLOCK:
if (input && Symbol.iterator in Object(input)) { return new Observable(observer => { try { for (const item of input) { observer.next(item); } observer.complete && observer.complete(); } catch (err) { observer.error && observer.error(err); } });
} COMMAND_BLOCK:
if (input && Symbol.iterator in Object(input)) { return new Observable(observer => { try { for (const item of input) { observer.next(item); } observer.complete && observer.complete(); } catch (err) { observer.error && observer.error(err); } });
} COMMAND_BLOCK:
if (input && typeof input === "object" && typeof input.length === "number") { return new Observable(observer => { try { for (let i = 0; i < input.length; i++) { observer.next(input[i]); } observer.complete && observer.complete(); } catch (err) { observer.error && observer.error(err); } });
} COMMAND_BLOCK:
if (input && typeof input === "object" && typeof input.length === "number") { return new Observable(observer => { try { for (let i = 0; i < input.length; i++) { observer.next(input[i]); } observer.complete && observer.complete(); } catch (err) { observer.error && observer.error(err); } });
} COMMAND_BLOCK:
if (input && typeof input === "object" && typeof input.length === "number") { return new Observable(observer => { try { for (let i = 0; i < input.length; i++) { observer.next(input[i]); } observer.complete && observer.complete(); } catch (err) { observer.error && observer.error(err); } });
} CODE_BLOCK:
throw new TypeError("Input type not supported"); CODE_BLOCK:
throw new TypeError("Input type not supported"); CODE_BLOCK:
throw new TypeError("Input type not supported"); COMMAND_BLOCK:
function from(input) { // your code here if(input && typeof input.subscribe === "function") { return new Observable(observer => input.subscribe(observer)) } if(input && typeof input.then === "function") { return new Observable(observer => { let cancelled = false; input.then( value => { if(!cancelled) { observer.next(value); observer.complete && observer.complete() } }, err => !cancelled && observer.error && observer.error(err) ) return () => { cancelled = true; } }) } if(input && Symbol.iterator in Object(input)) { return new Observable(observer => { try { for(const item of input) { observer.next(item); } observer.complete && observer.complete(); } catch (err) { observer.error && observer.error(err); } }) } if(input && typeof input === "object" && typeof input.length === "number") { return new Observable(observer => { try { for(let i = 0; i < input.length; i++) { observer.next(input[i]); } observer.complete && observer.complete() } catch (err) { observer.error && observer.error(err); } }) } throw new TypeError("Input type not supported");
} COMMAND_BLOCK:
function from(input) { // your code here if(input && typeof input.subscribe === "function") { return new Observable(observer => input.subscribe(observer)) } if(input && typeof input.then === "function") { return new Observable(observer => { let cancelled = false; input.then( value => { if(!cancelled) { observer.next(value); observer.complete && observer.complete() } }, err => !cancelled && observer.error && observer.error(err) ) return () => { cancelled = true; } }) } if(input && Symbol.iterator in Object(input)) { return new Observable(observer => { try { for(const item of input) { observer.next(item); } observer.complete && observer.complete(); } catch (err) { observer.error && observer.error(err); } }) } if(input && typeof input === "object" && typeof input.length === "number") { return new Observable(observer => { try { for(let i = 0; i < input.length; i++) { observer.next(input[i]); } observer.complete && observer.complete() } catch (err) { observer.error && observer.error(err); } }) } throw new TypeError("Input type not supported");
} COMMAND_BLOCK:
function from(input) { // your code here if(input && typeof input.subscribe === "function") { return new Observable(observer => input.subscribe(observer)) } if(input && typeof input.then === "function") { return new Observable(observer => { let cancelled = false; input.then( value => { if(!cancelled) { observer.next(value); observer.complete && observer.complete() } }, err => !cancelled && observer.error && observer.error(err) ) return () => { cancelled = true; } }) } if(input && Symbol.iterator in Object(input)) { return new Observable(observer => { try { for(const item of input) { observer.next(item); } observer.complete && observer.complete(); } catch (err) { observer.error && observer.error(err); } }) } if(input && typeof input === "object" && typeof input.length === "number") { return new Observable(observer => { try { for(let i = 0; i < input.length; i++) { observer.next(input[i]); } observer.complete && observer.complete() } catch (err) { observer.error && observer.error(err); } }) } throw new TypeError("Input type not supported");
}