Resumo dos métodos do objeto Promise

ECMAscript 6 fornece nativamente objetos Promise.

Promessa

O objeto Promise representa um evento que ocorrerá no futuro, e é usado para transmitir mensagens de operação assíncrona.É um conjunto de mecanismo de processamento de operação assíncrona.

Objetos de promessa resolvem o problema do inferno de retorno de chamada aninhado.

A função de retorno de chamada de estado resolvido e estado rejeitado são respectivamente formuladas através do método then.

1. Recursos de promessa

  • Ele pode lidar com erros de maneira flexível em uma série de operações assíncronas, evitando funções de retorno de chamada aninhadas.

As promessas também têm algumas desvantagens. Em primeiro lugar, a Promessa não pode ser cancelada, uma vez criada, será executada imediatamente e não pode ser cancelada a meio. Em segundo lugar, se a função de retorno de chamada não for definida, o erro lançado dentro da Promessa não será refletido para o exterior. Terceiro, quando ele está no estado Pendente, é impossível saber em qual estágio ele está (apenas iniciado ou prestes a ser concluído).

Em segundo lugar, a criação da promessa

const promise = new Promise(function(resolve, reject) {
    
    
  // ... some code
 
  if (/* 异步操作成功 调用resolve */){
    
    
    resolve(value);
  } else {
    
    
    /* 异步操作失败 调用reject */
    reject(error);
  }
});

resolve: chamado quando a operação assíncrona é bem-sucedida e passa o resultado da operação assíncrona como um parâmetro;

Rejeitar: chamado quando a operação assíncrona falha, e o erro relatado pela operação assíncrona é passado como parâmetro;

三 、 Promise.prototype.then ()

Depois que a instância Promise é gerada, você pode usar o método then (then método é definido no objeto de protótipo Promise.prototype . Sua função é adicionar uma função de retorno de chamada para a instância Promise quando o estado muda.), O método catch especifica o Estado resolvido e o estado rejeitado respectivamente Retorno de chamada:

ew Promise(function(resolve,reject) {
    
    
    let num = Math.random() * 2;
    console.log("产生的随机数为:" + num);
    setTimeout(function () {
    
    
        if(num < 1) {
    
    
            console.log("执行成功");
            resolve("200 OK");
        } else {
    
    
            console.log("执行失败");
            reject("失败原因num为:" + num);
        }
    }, num * 1000);
}).then(function(r) {
    
    
    console.log("then:" + r);
}).catch(function(j) {
    
    
    console.log("catch:" + j);
});

四 、 Promise.prototype.catch ()

O método Promise.prototype.catch () é usado para especificar a função de retorno de chamada quando ocorre um erro.

const p1 = new Promise(function cb(resolve, reject) {
    
    
    setTimeout(() => {
    
    
        console.log('欢迎')
        reject()
    }, 3000)
})
p1.then(_ => {
    
    
    setTimeout(() => {
    
    
        console.log('谢谢光临')
    }, 2000)
}).catch(_ => {
    
    
    console.log('出错了')
})

Quando uma promessa gera um erro, ela é capturada pela função de retorno de chamada especificada pelo método catch ().

Se o status da promessa foi resolvido, lançar um erro novamente é inválido.

五 、 Promise.prototype.finally ()

O método finally () retorna uma promessa .
No final da promessa, quer o resultado seja cumprido ou rejeitado , a função de retorno de chamada especificada será executada. Isso fornece uma maneira de o código precisar ser executado depois que a promessa for concluída com êxito.

Isso evita a situação em que a mesma instrução precisa ser escrita uma vez em ** then () e catch () **.

p.finally(onFinally);

p.finally(function() {
    
    
   // 返回状态为(resolved 或 rejected)
});

parâmetro:

  • onFinalmente
  • Função a ser chamada após o término da promessa.

valor de retorno:

  • Retorna um objeto Promise com uma função de retorno de chamada finalmente.

六 、 Promise.all ()

O método Promise.all (iterável) retorna uma instância. Nesse caso, todas as promessas no parâmetro iterável são "resolvidas" ou o parâmetro não contém a promessa, o retorno de chamada é concluído (resolver); se uma das promessas em o parâmetro falha (rejeitado) Este retorno de chamada da instância falhou (rejeitou), o motivo da falha é o resultado da primeira promessa falhada.

const promise1 = Promise.resolve(3);
const promise2 = 42;
const promise3 = new Promise((resolve, reject) => {
    
    
  setTimeout(resolve, 100, 'foo');
});

Promise.all([promise1, promise2, promise3]).then((values) => {
    
    
  console.log(values);
});
// expected output: Array [3, 42, "foo"]

Chefe de referência: https://blog.csdn.net/m0_46532221/article/details/106528918

Acho que você gosta

Origin blog.csdn.net/Menqq/article/details/111395911
Recomendado
Clasificación