nodejs 异步改同步

node之所以轻便高效,是因为它使用了事件驱动(事件环机制),因此在node中有大量的异步的回调函数。但是当异步回调里面嵌套异步回调的时候,就会发生一些混乱的事情,这个时候,我们就需要将嵌套的异步回调改变为同步,只有同步了才能获取一些变量或元素。

异步代码

const request       = require('request');
let synchronous_post = function (url , params ){
    let options = {
        url     : url ,
        form    : params
    };
    request.get(options , function(error,response,body){
        console.log(body);
    });
}
let demo = function(){
    let url = "http://www.baidu.com/";
    synchronous_post(url);
}
demo();

 

Promise、await、async异步变同步

const request       = require('request');
let synchronous_post = function (url , params ){
    let options = {
        url     : url ,
        form    : params
    };
    return new Promise(function(resolve, reject){
        request.get(options , function(error,response,body){
            if(error){
                reject(error);
            }else{
                resolve(body);
            }
        });
    });
}
let demo = async function(){
    let url = "http://www.baidu.com/";
    let body = await synchronous_post(url);
    console.log(body);
}
demo();

Promise 对象用于表示一个异步操作的最终状态(完成或失败),以及其返回的值。

await 操作符用于等待一个Promise 对象。它只能在异步函数 async function 中使用。

async function 声明用于定义一个返回 AsyncFunction 对象的异步函数。异步函数是指通过事件循环异步执行的函数,它会通过一个隐式的 Promise 返回其结果。

本文链接地址: nodejs 异步改同步

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注