2017-03-28 19 views
0

我是一個Node.js程序員。在Node.js 7.6發佈之前,我使用模塊'asyncawait'讓我的代碼處於異步等待樣式。編碼風格如下:有沒有任何可能的方式來使用Node.js 7.6+中沒有異步的內置等待?

var async = require('asyncawait/async'); 
var await = require('asyncawait/await'); 

var getData = async(function(finder){ 
    return await(db.collection.findOne(finder)); 
}); 

var f = function(finder){ 
    return await(getData(finder)); 
}; 

try{ 
    let result = f({id: 1}); 
}catch(err){ 
} 

在Node.js 7.6發佈後,async-await函數被正式內置。但是異步和等待功能(或稱爲關鍵字?)看起來必須在功能上配對。如果我將我的代碼更改爲,

var getData = async function(finder){ 
    return await db.collection.findOne(finder); 
} 

var f = function(finder){ 
    return await getData(finder); 
}; 

try{ 
    let result = f({id: 1}); 
}catch(err){ 
} 

'f'函數中的'await'關鍵字無法識別。除非我將代碼更改爲,

var getData = async function(finder){ 
    return await db.collection.findOne(finder); 
} 

var f = async function(finder){ 
    return await getData(finder); 
}; 

try{ 
    let result = await f({id: 1}); 
}catch(err){ 
} 

代碼將是單調乏味的。有沒有任何可能的方式來使用內置的等待,而不是在一個函數中的異步?

+0

那是什麼承諾是。基本上等待回調和異步到承諾,所以你可以輕鬆地切換syncronous和asyncronous代碼。 – GottZ

回答

相關問題