1. 程式人生 > >node下使用async同步執行非同步函式

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' }
------------------------------------

調donedoneparalleldonethree

相關推薦

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、非同步   非同步,就是在發出一個功能呼叫時,呼叫者不會立刻得到結果。實際處理這個呼叫的部