如果Promise 没有 resolve 和 reject 会怎么样

770 阅读1分钟

最近工作中遇到了一个问题,简单来说就是我先调后端的接口,然后等后端的 mqtt 推送来数据,判断数据是不是我这次想要的数据,然后才执行下一步的操作。遇到这个问题,我首先就想到了用 promise 去做,但是如果后端的 mqtt 一直不推送过来,我该怎么弄。所以我还需要一个超时处理,超时就用到了定时器去做,既然有了定时器,如果用户在定时器触发之前退出了当前页面怎么弄,所以我还需要在页面退出时清除定时器。下面就是我的大概代码。

let time = null;

//清除定时和数据监听
function clear() {
    clearTimeout(time);

    //并且清除数据监听
}

function sendMessage() {
    clear();
    return new Promise((resolve, reject)=>{

        //超时后直接 reject
        time = setTimeout(()=>{
            reject();
            clear();
        }, 3000);

        //监听 mqtt 推送过来的数据,如果收到正确的数据则清除数据监听和超时处理


        //调用接口发送数据,如果发送失败则清除定时和数据监听,直接 reject

    })
}