यह कष्टप्रद है कि एक सीधा समाधान नहीं है, और लपेटना return new Promise(...)भयंकर रूप से है, लेकिन मैंने एक ठीक काम के आसपास पाया है util.promisify(वास्तव में यह भी थोड़े ही रैपिंग करता है, बस अच्छा लग रहा है)।
function voidFunction(someArgs, callback) {
api.onActionwhichTakesTime(someMoreArgs, (response_we_need) => {
callback(null, response_we_need);
});
}
उपरोक्त फ़ंक्शन अभी तक कुछ भी वापस नहीं करता है। हम इसे कर Promiseके responseपारित की वापसी कर सकते callbackहैं:
const util = require('util');
const asyncFunction = util.promisify(voidFunction);
अब हम वास्तव awaitमें कर सकते हैं callback।
async function test() {
return await asyncFunction(args);
}
उपयोग करते समय कुछ नियम util.promisify
callbackसमारोह के अंतिम तर्क होने वाला है कि होना चाहिएpromisify
- माना-कॉलबैक फॉर्म में होना चाहिए
(err, res) => {...}
मजेदार बात यह है कि हमें विशेष रूप से यह लिखने की आवश्यकता नहीं है कि callbackवास्तव में क्या है।