Promise實現介面超時限制
阿新 • • 發佈:2019-01-06
主要思想:通過Promise.race()實現介面超時限制
// 定義上傳檔案介面函式
export const uploadFile= (params) => {
let uri = serverSrc + '/api/xxx/xxx' // 設定請求地址
return Promise.race([
uploadFilePromise(uri, params),
uploadFileTimeout(10000) // 10秒超時
])
}
// 定義請求介面函式 function uploadFilePromise(uri, params) { return new Promise(function (resolve, reject) { axios.post(uri, params, { headers: {'Content-Type': 'multipart/form-data'}, // 以formData形式上傳檔案 withCredentials: true }).then(response => { if ((response.data.code !== '200' && response.data.code !== 200) && response.data.msg !== '') { // console.log('上傳檔案出錯!') reject(response.data) } resolve(response.data.result) }) }) }
// 定義超時函式
function uploadFileTimeout(ms) {
let delayInfo = {
timeoutMsg: '上傳檔案超時'
}
return new Promise((resolve, reject) => {
setTimeout(function () {
reject(delayInfo)
}, ms)
})
}