1. 程式人生 > 實用技巧 >angular http post 重試

angular http post 重試

 1   // import { retry, retryWhen, catchError, map, tap, delayWhen, scan, takeWhile } from 'rxjs/operators';
 2   // import { timer } from 'rxjs/observable/timer';
 3   //帶重試的http post請求例子
 4   test() {
 5     let httpURL = "http://localhost:3000/test"
 6     this.http.post(httpURL, {}).timeout(1800000).pipe(map((val, index) => {
7 console.log("index", index) 8 if (val["success"] != true) { 9 throw val 10 } 11 return val 12 }), retryWhen(errors => { 13 // console.log("retryWhen errors", errors) 14 return errors.pipe( 15 16 // tap(val => console.log("retryWhen", val)),
17 delayWhen(() => timer(3 * 1000)),//延遲多少秒後重試 18 scan(count => { 19 // console.log("count", count) 20 return count + 1 21 }, 0) 22 , 23 takeWhile(count => { 24 return count < 3 //重試次數 25 }) 26 ) 27 } 28 )).subscribe(res => {
29 30 console.log(res) 31 }, err => { 32 33 console.log(err) 34 }) 35 }