node.js 獲取異步方法里面數據 的方式

第一種 使用回調函數:

function getData(callback){setTimeout(function(){var name = 'xxxx';callback(name);}, 1000);
}// 外部獲取異步方法里面的數據 采用回調函數的方式
getData(function(data){console.log(name);
});

第二種方式 事件觸發:

var fs=require('fs');
var events=require('events');var EventEmitter=new events.EventEmitter();function getMime(){fs.readFile('t1.js',function(err,data){console.log(3);EventEmitter.emit('data',data)})}
console.log(1);
getMime();
console.log(2);EventEmitter.on('data',function(mime){console.log(mime.toString());
})
console.log(4);

第三種 使用Promise

var fs = require('fs');
function getData(){return new Promise((resolve, reject)=>{fs.readFile('t1.js', (err, data)=>{if(err){reject(data);console.log('read fail');} else {resolve(data);}});});
}getData().then((data)=>{console.log(data.toString());
});
// Promiese 可以把定義好的異步函數 放入Promise里面作為參數, 然后用then獲取異步函數的數據

記錄一下:
async 會將其后的函數(函數表達式或 Lambda)的返回值封裝成一個 Promise 對象,而 await 會等待這個 Promise 完成,并將其 resolve 的結果返回出來。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/382817.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/382817.shtml
英文地址,請注明出處:http://en.pswp.cn/news/382817.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C語言malloc和calloc的區別

是否對申請的區域進行初始化而已 但是我想你也知道我們寫程序的時候多用malloc而很少用calloc,何解? 因為calloc雖然對內存進行了初始化(全部初始化為0),但是同樣也要降低效率的 calloc相當于 p malloc(); memse…

node.js將buffer對象轉換為json對象

d 是buffer對象 let jsstr JSON.stringify(d);let jsondata JSON.parse(jsstr);let buf new Buffer(jsondata);let data buf.toString();sx JSON.parse(data);console.log(sx[peer_count]);詳見百度經驗: https://jingyan.baidu.com/article/8ebacdf079f00549f75cd564.htm…

靜態多態之泛型編程(模板)

起初,我們寫不同類型的加法函數是這樣寫的吧: //Template.h #pragma onceint Add(const int left,const int right) {return leftright; }char Add(const char left,const char right) {return leftright; }float Add(const float left,const float rig…

網站視頻解析 有的url資源放在瀏覽器能直接播放,有的卻不行。

1有的視頻url放在瀏覽器地址欄,回車能直接播放 2.有的視頻url卻直接下載下來一個 很短暫的m3u8文件, 且不能播放 這時候把視頻url放在 vlc 或者專門解析m3u8的網站上卻能直接播放: 例如:https://youku.com-l-youku.com/20190207/2…

【數據結構】布隆過濾器原理詳解及其代碼實現

《博主簡介》 小伙伴們好,我是阿旭。專注于人工智能AI、python、計算機視覺相關分享研究。 ?更多學習資源,可關注公-仲-hao:【阿旭算法與機器學習】,共同學習交流~ 👍感謝小伙伴們點贊、關注! 《------往期經典推薦--…

c++詳解【繼承】

學過c的人都知道,c的三大特性:封裝、繼承、多態。 我們今天說的是c的繼承,那么為什么要引入繼承,它有什么特點呢? 首先,繼承的特點是:使代碼復用,為后面學習多態做鋪墊。 繼承分為…

centOS6.5如何從啟動界面直接進入命令行界面和如何從圖形界面進入命令行界面

centOS6.5如何從啟動界面直接進入命令行界面 編輯 /etc/inittab 將 id:5:initdefault: 修改為 id:3:initdefault: 下次重啟就不啟動X Window了 如何從圖形界面進入命令行界面 startx

優酷解析 轉載的

轉自 https://blog.csdn.net/qq_39797956/article/details/88076404

【送給Git初學者】

好多人都聽過Git吧,目前最流行的分布式版本管理系統。還有好多類似的cvs、svn(速度慢、必須聯網,這些是集中式版本控制系統)..... 那么,它是用來干什么的呢?舉個例子可能更好理解吧! 比如你寫…

虛擬機中的Linux安裝VMware Tools的方法

虛擬機中的Linux安裝VMware Tools的方法 http://www.jb51.net/softjc/189144.html 當.pl文件無法執行時 chmod install-vmware.pl./ install-vmware.pl 安裝就可。 先以root身份登入。 VMware Tools所在位置:VMware 安裝路徑 \VMware\VMware Workstation\linux…

appium 設置參數

appium 配置好環境變量以后, 需要設置啟動參數, 設備名稱, 應用的一些信息主要有以下信息: {"platformName": "Android","platformVersion": "5.1.1","deviceName": "ee…

遠程倉庫

上節我們安裝好了git,并配置好git,github之間的ssh。這節我們就開始用git管理我們的倉庫吧。(這節在windows下安裝的git bash上給大家演示吧) 首先,創建好一個倉庫,主要步驟如下: 創建好倉庫后…

linux根目錄的意義和內容

1.du命令:du [選項] 文件 ????(1)功能該命令是顯示指定文件以及下的所有文件占用系統數據塊的情況,如果沒有文件,默認為是當前工作目錄 ????-a ???顯示所有文件對系統數據塊的使用情況 ????-b ???顯示數據塊大小時以字節…

c++詳解【智能指針】

智能指針?是一個指針嗎?這里給大家說的是,它不是一個指針,但它模擬了指針所具有的功能。那么,為什么要有智能指針的引入呢?看看下面的例子吧~ void FunTest() {int *p new int[10];FILE *pFile fopen(&qu…

python 使用 os的 popen(‘命令’) 如果命令行輸出中 有中文亂碼, 提示 'gbk' 無法解析的錯誤 解決辦法

os.chdir(‘你的命令’) res os.popen(v.testcomman)print(tempstream.buffer.read().decode(encodingutf-8))

node.js async await 配合Promise對象使用

function getData(){return new Promise(function(resolve, reject){setTimeout(function(){var uname zhang;console.log(this is timeout);resolve(uname);}, 1000);}); } //await 配合 promiese 的 resolve 使用 就會真的等待 同步 async function test(){console.log(1);v…

c++【深度剖析shared_ptr】

shared_ptr解決了scoped_ptr管理單個對象的缺陷,且解決了防拷貝的問題。shared_ptr可以管理多個對象,并且實現了資源共享。 但是仍然存在一些問題,比如,我們熟悉的雙向鏈表: struct Node { Node(const int& value…

centos重新安裝yum

1.備份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 2.下載新的CentOS-Base.repo 到/etc/yum.repos.d/ wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo 3. yum makecache GDB的安裝 yum…

Electron 渲染進程,如何解決require is not defined的問題

mainWindow new BrowserWindow({webPreferences: {nodeIntegration: true}}) // nodeIntegration: true 加上這一句 就可以了 5.0以后默認是false

c++詳解【new和delete】

說起new和delete,了解過c的人應該都知道吧,它是用來分配內存和釋放內存的兩個操作符。與c語言中的malloc和free類似。 c語言中使用malloc/calloc/realloc/free進行動態內存分配,malloc/calloc/realloc用來在堆上分配空間,free將申…