Bluebird वादा (या कोई गैर-मूल वादा) प्राप्त करने के लिए, एसिंक फ़ंक्शन कहलाए जाने के लिए, मैं नोड v7.6 या ऊपर के साथ, एक रास्ता तलाश रहा हूं।एसिंक की प्रतीक्षा करने के लिए
उसी तरह मैं कर सकते हैं:
global.Promise = require('Bluebird'); // Or Q/When
var getResolvedPromise =() => Promise.resolve('value');
getResolvedPromise
.tap(...) // Bluebird method
.then(...);
देखें: May I use global.Promise=require("bluebird")
मैं की तरह कुछ करने के लिए सक्षम होना चाहते हैं:
global.Promise = require('Bluebird'); // Or Q/When
var getResolvedAsyncAwaitPromise = async() => 'value';
getResolvedAsyncAwaitPromise()
.tap(...) // Error ! Native Promises does not have `.tap(...)`
.then(...);
मैं जानता हूँ कि मैं यह कर सकते हैं किसी भी पल में कुछ इस तरह उपयोग करें:
Bluebird.resolve(getResolvedAsyncAwaitPromise())
.tap(...);
लेकिन उत्सुक था अगर AsyncFunction
द्वारा लौटाए गए डिफ़ॉल्ट वादे को बदलने का कोई तरीका होगा। कन्स्ट्रक्टर संलग्न है:
ध्यान दें कि AsyncFunction वैश्विक वस्तु नहीं है। यह निम्नलिखित कोड का मूल्यांकन करके प्राप्त किया जा सकता है।
Object.getPrototypeOf(async function(){}).constructor
MDN reference on AsyncFunction
अगर वहाँ AsyncFunction
की वादा निर्माता को बदलने के लिए कोई रास्ता नहीं है, मैं इस लॉकिंग के कारणों को पता करना चाहते हैं।
धन्यवाद!
नहीं है, यह संभव नहीं है। यदि ऐसा होता, तो इसका मतलब यह होगा कि आप वैश्विक रूप से वादे कार्यान्वयन को ओवरराइट करेंगे, जो एक दुःस्वप्न है। – Bergi