ใช้การนำเข้าต่อไปนี้:
import {Observable} from 'rxjs/Observable';
import 'rxjs/add/observable/of';
import 'rxjs/add/operator/delay';
ลองสิ่งนี้:
let fakeResponse = [1,2,3];
let delayedObservable = Observable.of(fakeResponse).delay(5000);
delayedObservable.subscribe(data => console.log(data));
อัพเดท: RXJS 6
โซลูชันข้างต้นใช้งานไม่ได้อีกต่อไปใน RXJS เวอร์ชันใหม่กว่า (และของเชิงมุมเป็นต้น)
ดังนั้นสถานการณ์คือฉันมีอาร์เรย์ของรายการที่จะตรวจสอบกับ API ด้วย API ยอมรับเพียงรายการเดียวและฉันไม่ต้องการฆ่า API ด้วยการส่งคำขอทั้งหมดในครั้งเดียว ดังนั้นฉันต้องปล่อยรายการตามกำหนดเวลาบนสตรีม Observable โดยมีการหน่วงเวลาเล็กน้อย
ใช้การนำเข้าต่อไปนี้:
import { from, of } from 'rxjs';
import { delay } from 'rxjs/internal/operators';
import { concatMap } from 'rxjs/internal/operators';
จากนั้นใช้รหัสต่อไปนี้:
const myArray = [1,2,3,4];
from(myArray).pipe(
concatMap( item => of(item).pipe ( delay( 1000 ) ))
).subscribe ( timedItem => {
console.log(timedItem)
});
โดยพื้นฐานแล้วจะสร้าง 'ล่าช้า' สังเกตได้ใหม่สำหรับทุกรายการในอาร์เรย์ของคุณ อาจมีวิธีอื่น ๆ อีกมากมายในการทำเช่นนี้ แต่วิธีนี้ใช้ได้ดีสำหรับฉันและสอดคล้องกับรูปแบบ RXJS 'ใหม่'