actionsভুয়েজে অ্যাসিনক্রোনাস হয়। কলিং ফাংশনটি (ক্রিয়াকলাপের সূচক) কোনও ক্রিয়া সম্পন্ন হয়েছে তা জানার একমাত্র উপায় - একটি প্রতিশ্রুতি ফিরিয়ে দেওয়া এবং পরে এটি সমাধান করা।
এখানে একটি উদাহরণ রয়েছে: myActionএকটি প্রত্যাবর্তন করে Promise, একটি এইচটিপি কল দেয় এবং Promiseপরে সংশোধন করে বা প্রত্যাখ্যান করে - সমস্ত অ্যাসিনক্রোনাসলি
actions: {
myAction(context, data) {
return new Promise((resolve, reject) => {
// Do something here... lets say, a http call using vue-resource
this.$http("/api/something").then(response => {
// http success, call the mutator and change something in state
resolve(response); // Let the calling function know that http is done. You may send some data back
}, error => {
// http failed, let the calling function know that action did not work out
reject(error);
})
})
}
}
এখন, যখন আপনার ভ্যু উপাদানটি শুরু myActionকরবে, এটি এই প্রতিশ্রুতিবদ্ধ বস্তুটি পাবে এবং এটি সফল হয়েছে কিনা তা জানতে পারে। ভ্যু উপাদানটির জন্য এখানে কিছু নমুনা কোড রয়েছে:
export default {
mounted: function() {
// This component just got created. Lets fetch some data here using an action
this.$store.dispatch("myAction").then(response => {
console.log("Got some data, now lets show something in this component")
}, error => {
console.error("Got nothing from server. Prompt user to check internet connection and try again")
})
}
}
আপনি উপরে দেখতে পারেন যে এটি actionsফিরে আসার জন্য এটি অত্যন্ত উপকারী Promise। অন্যথায় অ্যাকশন ইনিশিয়েটারের কী হবে তা জানার কোনও উপায় নেই এবং যখন ব্যবহারকারী ইন্টারফেসে কিছু দেখানোর মতো জিনিসগুলি স্থিতিশীল থাকে।
এবং সম্পর্কিত একটি সর্বশেষ নোট mutators- যেমন আপনি যথাযথভাবে উল্লেখ করেছেন, সেগুলি সিঙ্ক্রোনাস। এগুলি স্টাফ পরিবর্তন করে stateএবং সাধারণত তাদের কাছ থেকে ডাকা হয় actions। মিশে কোন প্রয়োজন নেই Promisesসঙ্গে mutatorsহিসাবে, actionsহাতল যে অংশ।
সম্পাদনা করুন: ইউনি-দিকনির্দেশক ডেটা প্রবাহের ভিউেক্স চক্র সম্পর্কে আমার মতামত:
আপনি যদি this.$store.state["your data key"]আপনার উপাদানগুলির মতো ডেটা অ্যাক্সেস করেন তবে ডেটা প্রবাহটি ইউনি-দিকনির্দেশক।
কর্ম থেকে প্রাপ্ত প্রতিশ্রুতি কেবলমাত্র উপাদানটি জানতে পারে যে কর্মটি সম্পূর্ণ।
উপাদানটি হয় উপরোক্ত উদাহরণে প্রতিশ্রুতি সমাধানের ফাংশন থেকে ডেটা নিতে পারে (ইউনি-দিকনির্দেশক নয়, সুতরাং প্রস্তাবিত নয়), বা সরাসরি $store.state["your data key"]যা দিকনির্দেশনাযুক্ত এবং ভয়েক্স ডেটা লাইফাইসাইকেলের অনুসরণ করে।
উপরে উল্লিখিত অনুচ্ছেদটি Vue.set(state, "your data key", http_data)আপনার ক্রিয়াকলাপে একবার http কলটি শেষ হয়ে গেলে আপনার বিবর্তককে ব্যবহারগুলি অনুমান করে ।