node下使用async同步執行非同步函式
本文主要簡單介紹使用async模組實現多個函式的非同步執行。async的github地址https://github.com/caolan/async。
下面主要使用async中的serise函式和parallel函式實現多個非同步函式的同步執行和多個非同步函式的並行執行。
主要程式碼如下:
var async1 = require("async");
var fs = require("fs");
async1.series({
one : function(done){
setTimeout(() => {
fs.readFile("./te.js" , function (err, data) {
if (err) {
console.log(err);
} else {
console.log("1");
console.log(data);
}
done(null, "1");
});
}, 2000);
},
two: function (done) {
async1.parallel({
one: function (done) {
setTimeout(function () {
console.log('------------------------------------');
console.log("11");
console.log('------------------------------------');
done(null , "11")
}, 1000);
},
two: function (done) {
console.log('------------------------------------');
console.log("22");
console.log('------------------------------------');
done(null, "22");
}
}, function(err, data){
done(null, "2");
});
},
three : function(done){
fs.readFile("./te.js", function (err, data) {
if (err) {
console.log(err);
} else {
console.log("3");
console.log(data);
}
done(null, "3")
});
}
}, function (err, data) {
if (err) {
console.log('------------------------------------');
console.log(err);
console.log('------------------------------------');
} else {
console.log('------------------------------------');
console.log(data);
console.log('------------------------------------');
}
});
以上程式碼的執行步驟:
1
<Buffer 74 65 77 73 74>
------------------------------------
22
------------------------------------
------------------------------------
11
------------------------------------
3
<Buffer 74 65 77 73 74>
------------------------------------
{ noe: '1', two: '2', three: '3' }
------------------------------------
相關推薦
node下使用async同步執行非同步函式
本文主要簡單介紹使用async模組實現多個函式的非同步執行。async的github地址https://github.com/caolan/async。 下面主要使用async中的serise函式和p
node.js——async同步非同步
程式碼是最好的語言,如下所示: var async=require('./async'); //同步無關聯 function series(){ async.series({ 'ma':fun
Spring @Async同步和非同步
Spring為任務排程與非同步方法執行提供了註解支援。通過在方法上設定@Async註解,可使得方法被非同步呼叫。也就是說呼叫者會在呼叫時立即返回,而被呼叫方法的實際執行是交給Spring的TaskExecutor來完成。 開啟@Async註解: <task:annotation-d
jQuery的ajax async同步和非同步介紹
專案中有這樣一個需求,使用ajax載入資料返回頁面並賦值,然後前端取出該值 這其中涉及到程式碼的順序問題,有時後臺還未返回資料,但已執行後面程式碼, 所以就會造成取不到值 $.ajax({ type: "post", url: "admin/PfmOptionRul
node.js看同步、非同步&阻塞、非阻塞
同步非同步是從當前時刻角度看的,阻塞非阻塞是對事件的執行過程來看的。同步是指一個時刻僅有一件事件在執行。非同步指一個時刻可以有多個事件同時執行。阻塞指事件執行必須連續,一個事件從開始到結束不能有其他的事件插入執行。就像單執行緒cpu一樣,一個任務由多個小任務組成,但是隻能一個
Linux下的同步與非同步
由於程序的概念導致,獨立討論一個程序是毫無意義的。而多個程序在工作時,如果這些程序之間存在一定聯絡(當然可能毫無聯絡),則此時會有兩種情況。這就是本文要討論的。同步和非同步。 在我初學階段,一直以為同步是同時進行的。這是個錯誤的概念。曾經看到有人舉例,打電話是同步,相對於發訊息,
ajax中async同步和非同步的區別和使用技巧
在網上看了很多關於ajax中同步和非同步的區別,這個同步的意思是當JS程式碼載入到當前AJAX的時候會把頁面裡所有的程式碼停止載入,頁面出去假死狀態,當這個AJAX執 行完畢後才會繼續執行其他程式碼頁
多執行緒中同步非同步函式與序列併發佇列的組合情況
在學習GCD多執行緒程式設計時,需要注意的幾個概念,函式,佇列,執行緒。 非同步函式 + 併發佇列 : 開啟多調執行緒,併發執行操作; 非同步函式 + 序列佇列 : 開啟一條執行緒,序列執行操作; 同步函式 + 併發佇列 : 主執行緒,序列執行操作; 同步函式 + 序列佇列
使用Promise和async-await實現的一個非同步遍歷+同步執行任務的例項
假設我們需要做N個同樣的檢測任務,檢測完成後會將結果存入資料庫。 我們希望每個檢測是同步完成的,完成後再進行儲存。 同時,我們又希望這些任務一起開始執行。 不需要檢查這些任務何時完畢。 /** * 檢測一個介面,返回檢測結果 * @param h
node.js中同步/非同步處理模組async解析
Async非同步處理模組! 安裝很簡單,就跟普通的安裝模組一樣就行了 npm install --save-dev async 這樣就安裝成功了! 接下來就是引用了,在程式碼裡引用模組: var async = require('async'); 這樣引用也就ok了
多執行緒設計模式——Half-sync/Half-async(半同步/半非同步)模式
這些都是根據我最近看的《Java實戰指南多執行緒程式設計(設計模式篇)》所得整理。 模式名稱 Half-sync/Half-async(半同步/半非同步)模式 模式解決的問題 同步和非同步各有各的優勢,有沒有一個方法,能夠既保持了同步程式設計的簡
node.js對mongodb的連接&增刪改查(附async同步流程控制)
color var literal int lba node () n! node.js 1.啟動mongodb數據庫 官網下載mongodb數據庫 在mongodb根目錄下創建文件夾:假設取名為test。 我們認為test就是mongodb新建的數據庫一枚。 創建批處理文
Java執行緒-同步和非同步的區別
1. &nb
執行緒的同步和非同步理解
//當個執行緒訪問同一個資源的時候,要注意執行緒同步的問題,如果不同步容易造成資料沒及時修改,然後就被另一個執行緒訪問,得到的資料還是上一次的資料,造成資料錯誤的情況,以下demo可以很容易發現,為了便於發現我在上面休眠100毫秒,如果將ticket設為方法內的區域性變數則就不會共享了。 pa
ajax 的 async 的同步和 非同步
async 英語釋義為 “非同步,非同步”。在專案中使用時總是忽略了它的存在。 當 async 是設定為 “true(預設狀態)”,即表示非同步進行,在 $.ajax執行時,也會同時執行$.ajax ->url 中的東西(想當於有兩個執行緒同時進行)。 當 async 是設定
jquery ajax屬性async(同步非同步)
在jquery的ajax中如果我們希望實現同步或者非同步我們可以直接設定async發生為真或假即可true false,下面舉幾個jquery ajax同步和非同步例項 一.什麼是同步請求:(false) 同步請求即是當前發出請求後,瀏覽
Node學習基礎(三) 之檔案的同步和非同步寫入操作(fs_檔案系統)
下面遇到看不懂的可以去看官方文件。 首先引入fs模組 第二步開啟檔案 官方文件格式是這樣 path 檔案路徑 這裡例子裡是FileHello.txt 如果沒有這個檔案 所以他會自動建立 FileHello.txt
vue-cli專案在IE下執行鉤子函式丟擲異常“ReferenceError: “Promise”未定義”的解決辦法
相容IE是個坑,低版本IE很多都沒法跑起來 問題現象:vue-cli專案在IE下執行,會在鉤子函數出現 ReferenceError: “Promise”未定義 解決辦法: step1:安裝最新的web-pack-server 命令列:npm install --save-dev web
Ajax 的同步和非同步,下拉框 聯動 回顯第二個不能回顯成功
Ajax 的同步和非同步,下拉框 聯動 回顯第二個不能回顯成功 示例: 使用Ajax 實現下拉框聯動 回顯 出現呢只有第一個能夠回顯成功 其餘的都不能正常回顯。 原因 :使用了Ajax的非同步 select的賦值再 非同步之前導致的 ( 賦值前個彈出 可以暫停賦值的執行順序 先載入後賦值 )
Linux下阻塞與非阻塞,同步與非同步的關係及IO模型
一、阻塞與非阻塞,同步與非同步的關係 1、同步 同步,就是在發出一個功能呼叫時,在沒有得到結果之前,該呼叫就不返回。也就是說事情必須一件一件地做,等前一件做完了才能做下一件事。 2、非同步 非同步,就是在發出一個功能呼叫時,呼叫者不會立刻得到結果。實際處理這個呼叫的部