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