


Seperti yang kita semua tahu, asynchronous ialah ciri dan kelebihan yang unik, tetapi pada masa yang sama, keperluan untuk penyegerakan dalam atur cara (contohnya, susunan pelaksanaan program kawalan ialah: func1 -> func2 -> func3) juga sangat biasa. Artikel ini merekodkan beberapa pemikiran saya mengenai isu ini.
Fungsi yang perlu dilaksanakan:
var func1 = function(req,res,callback){
setTimeout(function(){
console.log('in func1');
panggil balik(req,res,1);
},13000);
}
var func2 = function(req,res,callback){
setTimeout(function(){
console.log('in func2');
panggil balik(req,res,2);
},5000);
}
var func3 = function(req,res,callback){
setTimeout(function(){
console.log('in func3');
panggil balik(req,res,3);
},1000);
}
Ia boleh dilihat bahawa fungsi setTimeout digunakan dalam func1, func2 dan func3, dan masa pelaksanaan masing-masing ialah 13 saat, 5 saat dan 1 saat. Disebabkan oleh sifat tak segerak nodej, jika anda menggunakan kaedah panggilan fungsi biasa:
var req = null;
var res = null;
var panggil balik = function(){};
func1(req,res,callback);
func2(req,res,callback);
func3(req,res,callback);
Kandungan keluaran:
dalam func3
dalam func2
dalam func1
Alasannya ialah kerana nodejs tidak segerak, func2 tidak akan menunggu func1 selesai melaksanakan, tetapi akan melaksanakannya dengan serta-merta (begitu juga dengan func3). Memandangkan func3 mempunyai masa berjalan paling singkat, ia tamat dahulu, diikuti dengan func2 dan func1 terakhir. Tetapi ini jelas bukan hasil yang kita mahukan. apa nak buat
Penyelesaian 1: panggil balik
//Bersarang dalam
var req = null;
var res = null;
func1(req,res,function(){
func2(req,res,function(){
func3(req,res,function(){
Process.exit(0);
})
});
});
Penyelesaian 2: Panggilan rekursif
jika(kira == jumlah){
Kembali ;
}
lain{
funcs[count](req,req,function(){
Kira ;
executeFunc(funcs,count,sum,req,res);
});
}
}
//Panggilan segerak
var req = null;
var res = null;
var funcs = [func1,func2,func3];
var len = funcs.length;
executeFunc(funcs,0,len,req,res);
Penyelesaian 3: Panggil perpustakaan kelas
Dengan pembangunan nodejs, terdapat lebih banyak perpustakaan kelas yang sepadan. Langkah dan async adalah langkah yang baik.1. Panggilan Step agak menyegarkan:
fungsi thefunc1(){
func1(ini);
},
fungsi thefunc2(finishFlag){
console.log(finishFlag);
func2(ini);
},
fungsi thefunc3(finishFlag){
console.log(finishFlag);
}
);
2.kaedah siri async, dalam kes ini, kaedah panggilannya:
var req = null;
var res = null;
var panggil balik = function(){};
async.series(
[
Fungsi(panggilan balik){
func1(req,res,callback);
},
Fungsi(panggilan balik){
func2(req,res,callback);
},
Fungsi(panggilan balik){
func3(req,res,callback);
}
]
);

Vercel是什么?本篇文章带大家了解一下Vercel,并介绍一下在Vercel中部署 Node 服务的方法,希望对大家有所帮助!

gm是基于node.js的图片处理插件,它封装了图片处理工具GraphicsMagick(GM)和ImageMagick(IM),可使用spawn的方式调用。gm插件不是node默认安装的,需执行“npm install gm -S”进行安装才可使用。

本篇文章带大家详解package.json和package-lock.json文件,希望对大家有所帮助!

本篇文章给大家分享一个Nodejs web框架:Fastify,简单介绍一下Fastify支持的特性、Fastify支持的插件以及Fastify的使用方法,希望对大家有所帮助!

如何用pkg打包nodejs可执行文件?下面本篇文章给大家介绍一下使用pkg将Node.js项目打包为可执行文件的方法,希望对大家有所帮助!

node怎么爬取数据?下面本篇文章给大家分享一个node爬虫实例,聊聊利用node抓取小说章节的方法,希望对大家有所帮助!

本篇文章给大家分享一个Node实战,介绍一下使用Node.js和adb怎么开发一个手机备份小工具,希望对大家有所帮助!

先介绍node.js的安装,再介绍使用node.js构建一个简单的web服务器,最后通过一个简单的示例,演示网页与服务器之间的数据交互的实现。


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

EditPlus versi Cina retak
Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

MantisBT
Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

Penyesuai Pelayan SAP NetWeaver untuk Eclipse
Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.