请求5秒未发送成功就终止

67 阅读1分钟
//node并没有内置相关的xmlhttprequest,必须要额外安装相关包
let XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest

let fns = () => {
    return new Promise(resolve => {
    //promise.race()所以把请求包裹成promise的状态
        let xhr = new XMLHttpRequest()
        xhr.open('get', 'http://127.0.0.1:3000/delay')
        xhr.send()
        xhr.onreadystatechange = function () {
            if (xhr.readyState == 4) {
                if (xhr.status == 200) {
                    resolve(xhr.response)
                }
            }
        }
    })
}

let duration = (timer) => {
        return new Promise((resolve, reject) => {
            setTimeout(() => {
                console.log("reject")
                reject()
            }, timer)
        })
}

Promise.race([fns(), duration(5000)])