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 异步改同步