node.js 异步流程控制async

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fallinlovelj/article/details/78413499

node.js其最大的优势在于高并发,而高并发的背后最核心的就是异步了。node.js中几乎所有函数都是异步。但是,这对于结构化编程简直是个噩梦。
比如我希望1)打开数据2)查询A 表3)当A.userid=10时查询B表
在node.js中差不就是如下了(伪代码)

db.open( function(err , db )
    {
        if( !err)
        {
            db.select( 'A' ,function( err ,results) 
            {
                if( result.userid==10)
                {
                    db.select( 'B' , function( err ,results) {
                        db.close()
                    })
                }
            })
        }
    }
)

疯狂的嵌套.
福利来了nodejs 7+以上默认支持的async完美解决这个问题 又保留了node.js的异步
以redis.get为例

var redis = require("redis")
var client = redis.createClient(config.redis.port, config.redis.host );
var getValue=function( key  ) {
    return new Promise(function(resolve, reject) {
        client.get(key, function(err, c) {
            if (err) {
                mongodb.close();
                return reject(err);
            }
            resolve(c);
        });
    });
};


async function getV( key )
{
    let data = await getValue( key )
    return data
}

async xxxx.在async内部代码看起来岂不是和同步代码一样呢?
使用方法 可以是为下面的,我们在getV中resurun的数据都会在function(result )中得到
getV(‘x’).then( function(result ){
})

猜你喜欢

转载自blog.csdn.net/fallinlovelj/article/details/78413499