一种Promise延迟休眠方式

本文介绍了一种在ES6中使用Promise实现指定毫秒数延时的方法,通过定义一个sleep函数,该函数接收毫秒数作为参数并返回一个Promise对象,利用setTimeout实现延时效果。文章展示了如何将此延时函数应用于业务逻辑中,形成链式调用。
摘要由CSDN通过智能技术生成

使用ES6的promise,有时可能会有这样一种需求:休眠xxx毫秒之后再执行指定的promise。可通过下面的方式实现。

1、定义延迟休眠函数

延迟休眠函数仍然返回一个Promise对象,便于和原有的Promise做链式调用。原理是使用js原生的setTimeout方法,代码如下

/**
 * 定义休眠函数
 * @param {number} msTime 休眠时间,毫秒
 */
let sleep = msTime => {
    return new Promise(resolve => setTimeout(resolve({
        success: true,
        time: msTime
    }), msTime));
};

2、使用方式

假设businessAction1和businessAction2是休眠前后需要执行的业务逻辑,则休眠使用方式如下

let businessAction1 = () => {
    console.log('休眠前业务操作。。。');
    return Promise.resolve()
};

let businessAction2 = res => {
    console.log(`执行到这里,说明已休眠 ${res.time} 毫秒`);
    console.log('休眠后业务操作。。。');
    return Promise.resolve()
};

// 休眠调用
let call = () => {
    businessAction1().then(() => {
        return sleep(500);
    }).then(res => {
        return businessAction2(res);
    });
}

在浏览器控制台执行结果如下

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值