বিশেষত, এটি ডিফল্ট ( async: true) থেকে কীভাবে আলাদা ?
কোন পরিস্থিতিতে আমি স্পষ্টভাবে সেট asyncকরতে চাই false, এবং পৃষ্ঠায় থাকা অন্যান্য ঘটনা গুলি চালানো থেকে বিরত করার সাথে এর কিছু করার কি আছে?
বিশেষত, এটি ডিফল্ট ( async: true) থেকে কীভাবে আলাদা ?
কোন পরিস্থিতিতে আমি স্পষ্টভাবে সেট asyncকরতে চাই false, এবং পৃষ্ঠায় থাকা অন্যান্য ঘটনা গুলি চালানো থেকে বিরত করার সাথে এর কিছু করার কি আছে?
উত্তর:
পৃষ্ঠায় থাকা অন্যান্য ঘটনাগুলিকে গুলি চালানো থেকে বিরত করার সাথে কি কিছু করার আছে?
হ্যাঁ.
অ্যাসিঙ্কটিকে মিথ্যা হিসাবে সেট করার অর্থ আপনার ফাংশনটির পরবর্তী বিবৃতি আহ্বানের আগে আপনি যে বিবৃতিটি কল করছেন তা সম্পূর্ণ করতে হবে। যদি আপনি অ্যাসিঙ্ক সেট করেন: সত্য হয় তবে সেই বিবৃতিটি কার্যকর হয়ে যাবে এবং পরবর্তী বিবৃতিটি অ্যাসিঙ্ক বিবৃতিটি এখনও সম্পন্ন হয়েছে কিনা তা বিবেচনা না করেই ডাকা হবে।
আরও অন্তর্দৃষ্টি জন্য দেখুন: jQuery আজাক্স সাফল্য বেনাম ফাংশন সুযোগ
async: false থেকে পুরোপুরি অ্যাসিঙ্ক্রোনাসিটি সরিয়ে দেয় । ajax ব্লকে কল - এটি অনুসরণকারী কোডটি সার্ভারের প্রতিক্রিয়া না দেওয়া পর্যন্ত কার্যকর করা হয় না।
async: falseএটি মারা গেছে, আমি চেষ্টা করে দেখেছি18:17:49.384 Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user’s experience. For more help http://xhr.spec.whatwg.org/ 1 jquery.js:9061:4
আপনি যদি অ্যাসিক্রোনাস পুনরুদ্ধার অক্ষম করেন, অনুরোধটি শেষ না হওয়া পর্যন্ত আপনার স্ক্রিপ্টটি ব্লক হয়ে যাবে। এটি একটি পরিচিত অর্ডারে অনুরোধগুলির কিছু ক্রম সম্পাদন করার জন্য দরকারী, যদিও আমি অ্যাসিঙ্ক কলব্যাকগুলি ক্লিনার বলে মনে করি।
একটি ব্যবহারের ক্ষেত্রে ajaxব্যবহারকারীর উইন্ডোটি বন্ধ করা বা পৃষ্ঠাটি ছাড়ার আগে একটি কল করা। এটি ব্যবহারকারীর অন্য সাইটে নেভিগেট করতে বা ব্রাউজারটি বন্ধ করার আগে ডাটাবেসে কিছু অস্থায়ী রেকর্ড মুছে ফেলার মতো হবে।
$(window).unload(
function(){
$.ajax({
url: 'your url',
global: false,
type: 'POST',
data: {},
async: false, //blocks window close
success: function() {}
});
});
থেকে
https://xhr.spec.whatwg.org/#synchronous-flag
কর্মীদের বাইরে সিঙ্ক্রোনাস এক্সএমএলএইচটিপিউইকোয়েস্ট ওয়েব প্ল্যাটফর্ম থেকে অপসারণের প্রক্রিয়াধীন রয়েছে কারণ এর শেষ ব্যবহারকারীর অভিজ্ঞতার ক্ষতিকারক প্রভাব রয়েছে। (এটি একটি দীর্ঘ প্রক্রিয়া যা বহু বছর সময় নেয়)) যখন জাভাস্ক্রিপ্ট বৈশ্বিক পরিবেশ একটি নথির পরিবেশ হয় তখন বিকাশকারীদের অ্যাসিঙ্ক আর্গুমেন্টের জন্য মিথ্যা পাস করতে হবে না। ব্যবহারকারী এজেন্টদের বিকাশকারী সরঞ্জামগুলিতে এ জাতীয় ব্যবহার সম্পর্কে সতর্ক করতে উত্সাহিত করা হয় এবং এটি ঘটে গেলে একটি অবৈধঅ্যাক্সেসরর ব্যতিক্রম নিক্ষেপ করতে পারে। ভবিষ্যতের দিকনির্দেশটি কেবলমাত্র শ্রমিক থ্রেডে এক্সএমএলএইচটিপিআরএক্টের অনুমতি দেওয়া। বার্তাটি সেই প্রভাবটির জন্য একটি সতর্কতা হিসাবে চিহ্নিত করা হয়েছে।
অ্যাসিঙ্কটিকে মিথ্যা হিসাবে সেট করার অর্থ এজাক্স অনুরোধের অনুসরণের নির্দেশাবলীর অনুরোধটি সম্পূর্ণ হওয়ার জন্য অপেক্ষা করতে হবে। নীচে একটি কেস দেওয়া আছে যেখানে কোডটি সঠিকভাবে কাজ করার জন্য কোনওটিকে মিথ্যা হিসাবে অ্যাসিঙ্ক সেট করতে হবে।
var phpData = (function get_php_data() {
var php_data;
$.ajax({
url: "http://somesite/v1/api/get_php_data",
async: false,
//very important: else php_data will be returned even before we get Json from the url
dataType: 'json',
success: function (json) {
php_data = json;
}
});
return php_data;
})();
উপরে উদাহরণস্বরূপ অ্যাসিঙ্কের ব্যবহার পরিষ্কারভাবে ব্যাখ্যা করা হয়েছে : মিথ্যা
এটি মিথ্যা হিসাবে সেট করে, আমরা নিশ্চিত করেছি যে একবার ইউআরএল থেকে ডেটা পুনরুদ্ধার করা হবে , কেবল তারপরেই পিএইচপি_ডাটা; বলা হয়
return php_dataবিবৃতিটি সাফল্য ফাংশনে থাকতে পারে না, তবে তাকে $.ajax()ফাংশনের বাইরে থাকতে হবে । আমি আমার return php_datasuccess: function(){}
এই বিকল্পটি দশমিক: 3 ব্যবহার করুন
এখানে ইউআরএল: https://demos.telerik.com/kendo-ui/numerictextbox/index
<!DOCTYPE html>
<html>
<head>
<base href="https://demos.telerik.com/kendo-ui/numerictextbox/index">
<style>html { font-size: 14px; font-family: Arial, Helvetica, sans-serif; }</style>
<title></title>
<link rel="stylesheet" href="https://kendo.cdn.telerik.com/2019.3.1023/styles/kendo.default-v2.min.css" />
<script src="https://kendo.cdn.telerik.com/2019.3.1023/js/jquery.min.js"></script>
<script src="https://kendo.cdn.telerik.com/2019.3.1023/js/kendo.all.min.js"></script>
</head>
<body>
<div id="example">
<div id="add-product" class="demo-section k-content">
<p class="title">Add new product</p>
<ul id="fieldlist">
<li>
<label>
Price:
<input id="currency" type="number" title="currency" value="30" min="0" max="100" style="width: 100%;" />
</label>
</li>
<li>
<label>
Price Discount:
<input id="percentage" value="0.05" title="percentage" style="width: 100%;" />
</label>
</li>
<li>
<label>
Weight:
<input id="custom" value="2" title="custom" style="width: 100%;" />
</label>
</li>
<li>
<label>
Currently in stock:
<input id="numeric" type="number" title="numeric" value="17" min="0" max="100" step="1" style="width: 100%;" />
</label>
</li>
</ul>
</div>
<script>
$(document).ready(function() {
// create NumericTextBox from input HTML element
$("#numeric").kendoNumericTextBox();
// create Curerncy NumericTextBox from input HTML element
$("#currency").kendoNumericTextBox({
format: "c",
decimals: 3
});
// create Percentage NumericTextBox from input HTML element
$("#percentage").kendoNumericTextBox({
format: "p0",
min: 0,
max: 0.1,
step: 0.01
});
// create NumericTextBox from input HTML element using custom format
$("#custom").kendoNumericTextBox({
format: "#.00 kg"
});
});
</script>
<style>
.demo-section {
padding: 0;
}
#add-product .title {
font-size: 16px;
color: #fff;
background-color: #1e88e5;
padding: 20px 30px;
margin: 0;
}
#fieldlist {
margin: 0 0 -1.5em;
padding: 30px;
}
#fieldlist li {
list-style: none;
padding-bottom: 1.5em;
}
#fieldlist label {
display: block;
padding-bottom: .6em;
font-weight: bold;
text-transform: uppercase;
font-size: 12px;
}
#fieldlist label .k-numerictextbox {
font-size: 14px;
}
</style>
</div>
</body>
</html>