node.js - [nodejs] 为什么文件的 api 有同步的,但是数据库操作几乎都是异步的?
巴扎黑
巴扎黑 2017-04-17 15:28:14
0
2
465

nodejs 里面 fs 模块提供了 readFile 和 readFileSync 同步和异步的 api

而 mysql 库里面的 query 都是同步的,而没有 querySync 之类的方法

数据库的读写和文件的 IO 有什么区别?是做不了还是只是保持异步的风格?

谢谢~

巴扎黑
巴扎黑

全部回覆(2)
PHPzhong

謝邀,node的那幾個同步介面是為了方便開發者的,是原生提供的。

而其他幾個資料庫介面是第三方的模組,是其他的作者組織實現的。

一般情況下建議寫非同步,當然會有各種回呼不優雅啥的,這時候就建議用原生提供的各種同步方法來優化程式碼,實現優雅。

如: Generator / Promise / Async 等原生方案。

或是用co等封裝過的主流非同步處理方案

迷茫

實際上沒有什麼流程上的差別了,只是readFile是原生的API,官方提供了這個同步的在呼叫。
query 是 node-mysql 模組提供的 api ,沒給使用者提供此類方法罷了。

實際你可以自己實作一個,剛好 node v7+ 可以支援 asyncawait 了。
類似這樣的:

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)
}
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板