Como o Promise concatena várias tarefas síncronas e assíncronas

O then() da Promise retorna uma nova promessa, que pode ser aberta em uma chamada em cadeia de then(), e várias tarefas síncronas/assíncronas podem ser conectadas em série por meio da chamada em cadeia do then.

new Promise((resolve, reject) => {
    
    
    setTimeout(() => {
    
    
        console.log('我是异步任务1');
        resolve(111);
    },3000)
}).then(value => {
    
    
    console.log('任务1的值:', value);
    console.log('我是同步任务2');
    return 222;
}).then(value => {
    
    
    return new Promise((resolve, reject) => {
    
    
        setTimeout(() => {
    
    
            console.log('任务2的值:', value);
            console.log('我是异步任务3');
            resolve(333);
        },3000)
    }) 
}).then(value => {
    
    
	setTimeout(() => {
    
    
        console.log('任务3的值:', value);
        console.log('我是异步任务4');
       return 444;
    },3000)
}).then(value => {
    
    
	console.log('任务4的值:', value);
})

Insira a descrição da imagem aqui
1. Quando a tarefa assíncrona no Promise não for executada, ela não entrará na função de retorno de chamada .then (consulte a Tarefa 1)

2. Quando a função de retorno de chamada em .then é uma tarefa síncrona, o valor pode ser passado para o próximo .then na forma de retorno+valor (ver tarefa 2)

3. Quando a função de retorno de chamada em .then é uma tarefa assíncrona, o valor não pode ser passado para o próximo .then na forma de retorno + valor e será executado diretamente (ver tarefa 4)

4. Quando a função de retorno de chamada em .then for uma tarefa assíncrona, crie um novo objeto Promise para conter a tarefa assíncrona. Você precisa adicionar return antes da nova promessa, para que o valor possa ser passado para o próximo .then, e a execução não continuará até que o .then atual seja concluído (consulte a tarefa 3)

Acho que você gosta

Origin blog.csdn.net/weixin_46683645/article/details/118416945
Recomendado
Clasificación