আমি এখানে অনুমানটি অনুসরণ করছি এবং আমি নিশ্চিত নই যে এটি একাধিক যুক্তি দিয়ে পূরণ করার অনুমতি দেয় কিনা।
নাহ, কেবলমাত্র প্রথম প্যারামিটারটি প্রতিশ্রুতিবদ্ধ কনস্ট্রাক্টরের রেজোলিউশন মান হিসাবে বিবেচিত হবে। আপনি কোনও বস্তু বা অ্যারের মতো সংমিশ্রিত মান দিয়ে সমাধান করতে পারেন।
কোনও নির্দিষ্ট প্রতিশ্রুতি বাস্তবায়ন কীভাবে তা করে তা নিয়ে আমি মাথা ঘামাই না, আমি প্রতিশ্রুতিগুলির জন্য ডাব্লু 3 সি অনুচ্ছেদটি অনুসরণ করতে চাই।
আমি বিশ্বাস করি যে আপনি ভুল বলেছেন। স্পেসিফিকেশনটি ন্যূনতম হতে ডিজাইন করা হয়েছে এবং প্রতিশ্রুতি পাঠাগারগুলির মধ্যে আন্তঃব্যবস্থাপনের জন্য নির্মিত হয়েছে। ধারণাটি এমন একটি উপসেট রয়েছে যা উদাহরণস্বরূপ ডোম ফিউচার নির্ভরযোগ্যভাবে ব্যবহার করতে পারে এবং গ্রন্থাগারগুলি গ্রাস করতে পারে। আপনি .spread
কিছুক্ষণের জন্য যা চান তা বাস্তবায়নের প্রতিশ্রুতি দিন । উদাহরণ স্বরূপ:
Promise.try(function(){
return ["Hello","World","!"];
}).spread(function(a,b,c){
console.log(a,b+c); // "Hello World!";
});
সঙ্গে Bluebird । আপনি যদি এই কার্যকারিতাটি চান তবে একটি সমাধান হ'ল এটি পলিফিল।
if (!Promise.prototype.spread) {
Promise.prototype.spread = function (fn) {
return this.then(function (args) {
return Promise.all(args); // wait for all
}).then(function(args){
//this is always undefined in A+ complaint, but just in case
return fn.apply(this, args);
});
};
}
এটি আপনাকে করতে দেয়:
Promise.resolve(null).then(function(){
return ["Hello","World","!"];
}).spread(function(a,b,c){
console.log(a,b+c);
});
স্বাচ্ছন্দ্যে মাতাল প্রতিশ্রুতি সঙ্গে । বা স্প্রেড ব্যবহার করুন যা এখন (2018) ব্রাউজারগুলিতে সাধারণ:
Promise.resolve(["Hello","World","!"]).then(([a,b,c]) => {
console.log(a,b+c);
});
বা অপেক্ষা সহ:
let [a, b, c] = await Promise.resolve(['hello', 'world', '!']);