nodejs使用async模塊同步執(zhí)行的方法
首先安裝 模塊async

測(cè)試代碼:
call.js
exports.fun1 = function (callback) {
setTimeout(function(){
console.log('方法1');
callback('1');
},1900);
}
exports.fun2 = function (callback) {
setTimeout(function(){
console.log('方法2');
callback('2');
},1700);
}
exports.fun3 = function (callback) {
setTimeout(function(){
console.log('方法3');
callback('3');
},1500);
}
test.js:
var async = require('async');
var step = require('step');
var call = require('./call');
call.fun1(function(data){
console.log(data);
});
call.fun2(function(data){
console.log(data);
});
call.fun3(function(data){
console.log(data);
});
console.log('正常執(zhí)行的方法');
沒(méi)有使用異步之前,我們調(diào)用三個(gè)方法期望的結(jié)果是:輸出:方法1,方法2,方法3,但是node本身異步的機(jī)制決定了它不能像其他同步語(yǔ)言一樣正常輸出,結(jié)果輸出是以時(shí)間花費(fèi)最少的先執(zhí)行:結(jié)果

這就是node的異步機(jī)制,我們使用async同步模塊進(jìn)行再次測(cè)試
加入代碼:
function seriesFunc() {
async.series([
function(callback) {
call.fun1(function(data){
callback(null,data);
});
},
function(callback) {
call.fun2(function(data){
callback(null,data);
});
},
function(callback) {
call.fun3(function(data){
callback(null,data);
});
}],
function(error,result) {
if(error) {
console.log("error: ",error,"msg: ",result);
}
else {
console.log("方法執(zhí)行完畢"+result);
}
}
);
}
seriesFunc();
運(yùn)行結(jié)果是否是我們期望的一次執(zhí)行呢?

結(jié)果果然是我們期待的一樣,順序進(jìn)行執(zhí)行,node異步的機(jī)制就決定了,響應(yīng)速度快,做web開(kāi)發(fā)的優(yōu)勢(shì)。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
nodejs中關(guān)于mysql數(shù)據(jù)庫(kù)的操作
這篇文章主要介紹了nodejs中關(guān)于mysql數(shù)據(jù)庫(kù)的操作方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08
使用NodeJs 開(kāi)發(fā)微信公眾號(hào)(三)微信事件交互實(shí)例
這篇文章主要介紹了使用NodeJs 開(kāi)發(fā)微信公眾號(hào)(三)微信事件交互實(shí)例的相關(guān)資料,需要的朋友可以參考下2016-03-03
node.js中的fs.fsyncSync方法使用說(shuō)明
這篇文章主要介紹了node.js中的fs.fsyncSync方法使用說(shuō)明,本文介紹了fs.fsyncSync的方法說(shuō)明、語(yǔ)法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下2014-12-12
Node.js使用對(duì)話框ngDialog的示例代碼
本篇文章主要介紹了Node.js使用對(duì)話框ngDialog的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05
在Node.js中實(shí)現(xiàn)文件復(fù)制的方法和實(shí)例
這篇文章主要介紹了在Node.js中實(shí)現(xiàn)文件復(fù)制的方法和實(shí)例,使用FS模塊實(shí)現(xiàn),需要的朋友可以參考下2014-06-06
在Mac OS上安裝使用Node.js的項(xiàng)目自動(dòng)化構(gòu)建工具Gulp
Gulp是一個(gè)在使用上比Grunt更加簡(jiǎn)潔的自動(dòng)化工具(文中附有對(duì)比),和Node的npm包管理器配合使用非常方便,下面就記錄一下在Mac OS上安裝使用Node.js的項(xiàng)目自動(dòng)化構(gòu)建工具Gulp的方法:2016-06-06
Node.js命令行/批處理中如何更改Linux用戶密碼淺析
這篇文章主要給大家介紹了關(guān)于Node.js命令行/批處理中如何更改Linux用戶密碼的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07
Linux Centos7.2下安裝nodejs&npm配置全局路徑的教程
今天小編就為大家分享一篇Linux Centos7.2下安裝nodejs&npm配置全局路徑的教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05
nodejs操作mongodb的填刪改查模塊的制作及引入實(shí)例
下面小編就為大家分享一篇nodejs操作mongodb的填刪改查模塊的制作及引入實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-01-01

