ネイティブ反応させ[RN]は、要求設定されたタイムアウトをフェッチ

まず、アイデアの実現

特徴は、私たちがPromise.raceこれは2つのタスクを追加Promise.race、1は通常のWeb要求タスクAは、別のタスクBは、ネットワークの遅延は、ネットワークレイテンシがのsetTimeoutメソッドを利用することができる、です。
今回は三つの条件があります:
1.Aのタスクが完了する8秒、正常終了Promise.raceタスク内(8秒でタイムアウトと仮定して)。
2.まだ自動タイマー割り込みタスクB Promise.race年末までに完了していない8秒以上のタスクを。
3.異常、Promise.raceは自動的に終了します。
上記の3例についてネットワークタイムアウトスキームを設計します。

第二に、コード
HttpUtil.js
 
// 定義する遅延機能
のconst遅延=(= TIMEOUT 8。 * 1000年)=> {
     返す 新しい新しい約束を((解決、拒否)=> { 
        のsetTimeout(() => { 
            (拒否新しい新しいエラー(' ネットワークタイムを' ); 
        }、TIMEOUT); 
    })
} 

// フェッチ要求ネットワーク
CONST fetchPromise =(メソッド、URL、FORMDATA)=> {
     戻り 新しい新しい約束を((解決、拒否)=> { 
        (URL、{FETCH 
            方法:方法、 
            本体:FORMDATAを
        })を((応答)=> {
             場合(response.ok){
                 戻りresponse.json()。
            } { 
                拒否(新しいエラー(' 服务器异常' )); 
            } 
        。})を((responseJson) => { 
            解決(responseJson); 
        })。キャッチ((ERR)=> { 
            拒否(新しいエラー(ERR); 
        })
    })
} 

// レース任务
のconst _fetch =(fetchPromise、タイムアウト)=> {
     リターンPromise.race([fetchPromise、遅延(タイムアウト)])。
} 

// ポスト
CONST HttpPost =(URL、FORMDATA、タイムアウト= 8 * 1000年)=> {
     戻り _fetch(fetchPromise(' POST ' 、URL、FORMDATA)、タイムアウト)。
}。

//は、取得
のconst HTTPGET =(URL、タイムアウト= 8 * 1000年)=> {
     戻り _fetch(fetchPromise(' ゲット' 、URL)を、タイムアウト)。
}。

export {HttpPost ,HttpGet}
 

 

参考:

https://www.jianshu.com/p/2df7c6e3b3c3

 

このブログのアドレス:wukong1688

この記事オリジナル住所:https://www.cnblogs.com/wukong1688/p/10963004.html

有名なソースを転載してください!~~ありがとう

 

おすすめ

転載: www.cnblogs.com/wukong1688/p/10963004.html