nodejs 里面 fs 模块提供了 readFile 和 readFileSync 同步和异步的 api
而 mysql 库里面的 query 都是同步的,而没有 querySync 之类的方法
数据库的读写和文件的 IO 有什么区别?是做不了还是只是保持异步的风格?
谢谢~
謝邀,node的那幾個同步介面是為了方便開發者的,是原生提供的。
而其他幾個資料庫介面是第三方的模組,是其他的作者組織實現的。
一般情況下建議寫非同步,當然會有各種回呼不優雅啥的,這時候就建議用原生提供的各種同步方法來優化程式碼,實現優雅。
如: Generator / Promise / Async 等原生方案。
或是用co等封裝過的主流非同步處理方案
實際上沒有什麼流程上的差別了,只是readFile是原生的API,官方提供了這個同步的在呼叫。 而 query 是 node-mysql 模組提供的 api ,沒給使用者提供此類方法罷了。
readFile
query
實際你可以自己實作一個,剛好 node v7+ 可以支援 async 和 await 了。 類似這樣的:
async
await
querySync(sql, data) { return new Promise((resolve, reject) => { connection.query(sql, data, (err, result) => { if (err) { reject(err); return; } resolve(result); }); }); } async getData(sql, data) { const data = await querySync(sql, data) }
謝邀,node的那幾個同步介面是為了方便開發者的,是原生提供的。
而其他幾個資料庫介面是第三方的模組,是其他的作者組織實現的。
一般情況下建議寫非同步,當然會有各種回呼不優雅啥的,這時候就建議用原生提供的各種同步方法來優化程式碼,實現優雅。
如: Generator / Promise / Async 等原生方案。
或是用co等封裝過的主流非同步處理方案
實際上沒有什麼流程上的差別了,只是
readFile
是原生的API,官方提供了這個同步的在呼叫。而
query
是 node-mysql 模組提供的 api ,沒給使用者提供此類方法罷了。實際你可以自己實作一個,剛好 node v7+ 可以支援
async
和await
了。類似這樣的: