El uso y abreviatura de promesa

    La mayor parte de la ejecución del código en JS es de un solo subproceso. Si desea procesar varias cosas en un subproceso, debe utilizar devoluciones de llamada asincrónicas. La devolución de llamada asincrónica se puede lograr a través de una función de devolución de llamada, o se puede lograr la devolución de llamada asincrónica mediante el mecanismo Promise.
    A continuación se presenta el uso y la abreviatura de Promise en js.

1. Demanda

  • Use Promise para juzgar el número entre [0,100), si el número es menor que 50, devuelve OK, de lo contrario devuelve fallido.

2. Código inicial

    //one.js

    function test(resolve,reject) {
    
    
        var num = Math.random()*100;  //[0,100) 随机数(包括整数和小数)
        var resNum = Math.round(num); //[0,100) 随机整数(四舍五入)
        setTimeout(function () {
    
    
            if (resNum < 50) {
    
    
                resolve('200 OK resNum= '+resNum);
            } else {
    
    
                reject('failed,resNum= '+resNum);
            }
        },1*1000);
    }

    var p1 = new Promise(test);
    var p2 = p1.then(function (result) {
    
    
        console.log('成功:'+result);
    });

    var p3 = p2.catch(function (reason) {
    
    
        console.log('失败:'+reason)
    });
    

3. Fusión de ramas de promesa

    //two.js

    function test(resolve,reject) {
    
    
        var num = Math.random()*100;  //[0,100) 随机数(包括整数和小数)
        var resNum = Math.round(num); //[0,100) 随机整数(四舍五入)
        setTimeout(function () {
    
    
            if (resNum < 50) {
    
    
                resolve('200 OK resNum= '+resNum);
            } else {
    
    
                reject('failed,resNum= '+resNum);
            }
        },1*1000);
    }

    //3) 简化2
    new Promise(test).then(function (result) {
    
    
        console.log('成功:'+result);
    }).catch(function (reason) {
    
    
        console.log('失败:'+reason);
    });
    

4. El cuerpo principal de la función se fusiona con la rama de promesa.

    //three.js

    //4) 简化3
    new Promise(function (resolve,reject) {
    
    
        var num = Math.random()*100;  //[0,100) 随机数(包括整数和小数)
        var resNum = Math.round(num); //[0,100) 随机整数(四舍五入)
        setTimeout(function () {
    
    
            if (resNum < 50) {
    
    
                resolve('200 OK resNum= '+resNum);
            } else {
    
    
                reject('failed,resNum= '+resNum);
            }
        },1*1000);
    }).then(function (ok) {
    
    
        console.log('成功:'+ok);
    }).catch(function (err) {
    
    
        console.log('失败:'+err)
    })
    

    El efecto es el siguiente:

Figura (1) Menos de 50, devolución exitosa

Figura (2) Si es mayor que 50, devolverá la falla.

Supongo que te gusta

Origin blog.csdn.net/sanqima/article/details/113783320
Recomendado
Clasificación