JavaScript Promise इंटिग्रेशन (JSPI), ऐसा एपीआई है जो एसिंक्रोनस वेब एपीआई को ऐक्सेस करने के लिए, WebAssembly में सिंक किए गए क्रम में चलने वाले कोड को कंपाइल करने की अनुमति देता है. कई वेब एपीआई, JavaScript के Promise के हिसाब से बनाए जाते हैं: अनुरोध किए गए ऑपरेशन को तुरंत करने के बजाय, वे ऐसा करने के लिए एक Promise दिखाते हैं. जब आखिर में कार्रवाई पूरी हो जाती है, तो ब्राउज़र का टास्क रनर, Promise के साथ किसी भी कॉलबैक को लागू करता है. JSPI इस आर्किटेक्चर में हुक करता है, ताकि प्रॉमिस मिलने पर वेब असेंबली ऐप्लिकेशन को निलंबित किया जा सके और प्रॉमिस पूरा होने पर उसे फिर से शुरू किया जा सके.
Chrome 123 से लेकर Chrome 128 तक, JSPI, ऑरिजिन ट्रायल के तौर पर उपलब्ध है. ब्लॉग पोस्ट पेश है WebAssembly JavaScript Promise Integration API में या खास जानकारी के ड्राफ़्ट से, जेएसपीआई के बारे में ज़्यादा जानें.
इस सुविधा को इस्तेमाल करने के तरीके को बेहतर तरीके से समझने के लिए, C प्रोग्राम का यह उदाहरण देखें. इसमें, JavaScript फ़ंक्शन के साथ जोड़ने की प्रोसेस को आउटसोर्स करके, फ़ाइबोनाची क्रम का हिसाब लगाया गया है.
// This is C code.
long promiseFib(long x) {
if (x == 0)
return 0;
if (x == 1)
return 1;
// This is where the C code calls asynchronous JavaScript.
return promiseAdd(promiseFib(x - 1), promiseFib(x - 2));
}
// Addition artificially wrapped in a Promise.
EM_ASYNC_JS(long, promiseAdd, (long x, long y), {
// This is asynchronous JavaScript code.
return Promise.resolve(x+y);
});
इस C प्रोग्राम को WebAssembly में इकट्ठा करने के लिए, नीचे दिए गए निर्देश का इस्तेमाल करें. इसके लिए, Emscripten SDK की ज़रूरत होती है.
emcc -O3 badfib.c -o index.html -s ASYNCIFY=2
JavaScript से JSPI की सुविधा का पता लगाने के लिए, यह तरीका अपनाएं:
if ('Suspender' in WebAssembly) {
// JSPI is supported.
}
पिछले कोड सैंपल से JSPI का डेमो, Glitch पर उपलब्ध है. साथ ही, इसे यहां भी एम्बेड किया गया है. अगर आप चाहें, तो Emscripten से जनरेट किया गया सोर्स कोड देखें. हालांकि, ओरिजनल C प्रोग्राम एक दिलचस्प कोड है (इस लिंक पर क्लिक करने से कोड डाउनलोड हो जाएगा).
अपने ऐप्लिकेशन के असली उपयोगकर्ताओं के साथ JPGI को आज़माने के लिए, ऑरिजिन ट्रायल के लिए साइन अप करें. अगर आपको निर्देश चाहिए, तो ऑरिजिन ट्रायल शुरू करना लेख पढ़ें. JSPI टीम को आपके ऑरिजिन ट्रायल के फ़ीडबैक का इंतज़ार रहेगा. इसके लिए, निर्देशों में पांचवां चरण देखें. इससे, इस सुविधा को लॉन्च करने के बाद, यह आपकी ज़रूरतों के हिसाब से बन सकेगी!