প্রতিশ্রুতি সর্বদা মুলতুবি থাকা লগ হবে যতক্ষণ না এর ফলাফলগুলি এখনও সমাধান হয় না। .then
প্রতিশ্রুতি রাষ্ট্র (সমাধান বা এখনও বিচারাধীন) নির্বিশেষে ফলাফলগুলি ক্যাপচার করার জন্য আপনাকে অবশ্যই প্রতিশ্রুতি দিতে হবে:
let AuthUser = function(data) {
return google.login(data.username, data.password).then(token => { return token } )
}
let userToken = AuthUser(data)
console.log(userToken) // Promise { <pending> }
userToken.then(function(result) {
console.log(result) // "Some User token"
})
কেন এমন?
প্রতিশ্রুতি শুধুমাত্র এগিয়ে দিক; আপনি কেবল একবার এগুলি সমাধান করতে পারেন। এর সমাধান হওয়া মান Promise
এর .then
বা তার কাছে দেওয়া হয়.catch
পদ্ধতিতে ।
বিস্তারিত
প্রতিশ্রুতি অনুযায়ী / এ + স্পেস:
প্রতিশ্রুতি সমাধানের পদ্ধতিটি একটি বিমূর্ত অপারেশন যা ইনপুট হিসাবে একটি প্রতিশ্রুতি এবং একটি মান হিসাবে গ্রহণ করা হয়, যা আমরা [[সমাধান করুন]] (প্রতিশ্রুতি, এক্স) হিসাবে চিহ্নিত করি। X যদি তত্ক্ষণযোগ্য হয়, তবে এই প্রতিশ্রুতিটি এক্সের অবস্থা গ্রহণ করার চেষ্টা করে, এই ধারণার অধীনে এক্স অন্তত কিছুটা প্রতিশ্রুতির মতো আচরণ করে। অন্যথায়, এটি x মান দিয়ে প্রতিশ্রুতি পূরণ করে।
তত্ক্ষণযোগ্যদের এই চিকিত্সা প্রতিশ্রুতি বাস্তবায়নকে আন্তঃক্রিয়াবদ্ধ করতে অনুমতি দেয়, যতক্ষণ না তারা কোনও প্রতিশ্রুতি / এ + -তত্পত্কর পদ্ধতিটি প্রকাশ করে। এটি প্রতিশ্রুতিবদ্ধ / এ + বাস্তবায়নকে যুক্তিসঙ্গত তারপর পদ্ধতিগুলির সাথে ননকনফরম্যান্ট বাস্তবায়নগুলিকে "একীকরণ" করতে সহায়তা করে।
এই অনুচ্ছেদটি পার্স করা কিছুটা শক্ত, সুতরাং আসুন এটি ভেঙে দিন। বিধিটি হ'ল:
যদি .then
হ্যান্ডলারের ফাংশনটি কোনও মান দেয়, তবে Promise
সেই মানটির সাথে সমাধান হয়। যদি হ্যান্ডলারটি অন্যটিকে ফেরত দেয় Promise
তবে মূল Promise
শৃঙ্খলার সমাধানের মানটি সমাধান করে Promise
। পরবর্তী.then
হ্যান্ডলারটিতে সর্বদা পূর্ববর্তী অবস্থায় ফিরে আসা শৃঙ্খলাবদ্ধ প্রতিশ্রুতির সমাধান হওয়া মান থাকবে .then
।
এটি যেভাবে কাজ করে তা আরও বিশদে নীচে বর্ণিত:
1. .then
ফাংশনটির প্রত্যাবর্তন প্রতিশ্রুতির সমাধানযোগ্য মান হবে।
function initPromise() {
return new Promise(function(res, rej) {
res("initResolve");
})
}
initPromise()
.then(function(result) {
console.log(result); // "initResolve"
return "normalReturn";
})
.then(function(result) {
console.log(result); // "normalReturn"
});
২. .then
ফাংশনটি যদি একটি ফেরত দেয় Promise
, তবে সেই শৃঙ্খলযুক্ত প্রতিশ্রুতির সমাধান হওয়া মানটি নিম্নলিখিতটিতে দেওয়া হয় .then
।
function initPromise() {
return new Promise(function(res, rej) {
res("initResolve");
})
}
initPromise()
.then(function(result) {
console.log(result); // "initResolve"
return new Promise(function(resolve, reject) {
setTimeout(function() {
resolve("secondPromise");
}, 1000)
})
})
.then(function(result) {
console.log(result); // "secondPromise"
});