Skip to content

Promise/Generator/Async Await 实现Sleep方法 #31

@Reaper622

Description

@Reaper622

使用Promise实现Sleep

// Promise
const sleepPromise = delay => {
    console.log('Promise sleep start');
    return new Promise(resolve => setTimeout(resolve, delay));
}
sleepPromise(1000).then(res => {console.log('Promise sleep end')});

使用Generator函数实现Sleep

// Generator
function *sleepGenerator(delay) {
    console.log('Generator sleep start')
    yield new Promise((resolve, reject) => {
        setTimeout(resolve, delay);
    })
}
sleepGenerator(3000).next().value.then(res => {
    console.log('Generaotr sleep end');
})

使用Async/Await实现Sleep

// a
async function sleepAsync(delay) {
    console.log('async sleep start')
    return await new Promise((resolve, reject) => {
        setTimeout(resolve,delay);
    })
}

sleepAsync(5000).then(res => {console.log('async sleep end')})

ES5回调实现Sleep

function sleep(time, callback) {
    console.log('sleep start')
    if (typeof callback !== 'function') {
        setTimeout(() => {console.log(callback)}, time);
    } else {
        setTimeout(callback, time);
    }
}

function output () {
    console.log('sleep finish');
}

var value = 123;
sleep(7000, output);
sleep(8000, value);

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions