অ্যাসিঙ্ক্রোনাস, অ্যাজাক্স অনুরোধের চেয়ে আমি কীভাবে সিঙ্ক্রোনাস সম্পাদন করতে jQuery পেতে পারি?


1207

আমার কাছে একটি জাভাস্ক্রিপ্ট উইজেট রয়েছে যা স্ট্যান্ডার্ড এক্সটেনশন পয়েন্ট সরবরাহ করে। তার মধ্যে একটি হ'ল beforecreateফাংশন। falseকোনও আইটেম তৈরি হতে আটকাতে এটি ফিরে আসা উচিত ।

আমি jQuery ব্যবহার করে এই ফাংশনে একটি অ্যাজাক্স কল যুক্ত করেছি:

beforecreate: function (node, targetNode, type, to) {
  jQuery.get('http://example.com/catalog/create/' + targetNode.id + '?name=' + encode(to.inp[0].value),

  function (result) {
    if (result.isOk == false) 
        alert(result.message);
  });
}

তবে আমি আমার উইজেটটি আইটেমটি তৈরি করতে বাধা দিতে চাই, তাই আমার falseকলব্যাক নয়, মাদার-ফাংশনে ফিরে আসা উচিত । JQuery বা অন্য কোনও ইন-ব্রাউজার এপিআই ব্যবহার করে একটি সিঙ্ক্রোনাস এজেএক্স অনুরোধ সম্পাদন করার কোনও উপায় আছে কি?


30
এটি সমাধানের যথাযথ উপায় হ'ল আপনার উইজেটের এক্সটেনশন পয়েন্ট ব্যবহারের প্রতিশ্রুতিগুলি পুনরায় লিখন। এই উপায়ে সহজেই আপনাকে একটি অ্যাসিনক্রোনাস অ্যাকশন সেট করতে দেয় (যেমন একটি এজ্যাক্স অনুরোধ) beforecreate
কোস

3
আমি সাজাক ফাংশনটির প্রস্তাব দিই। আমাদের কি চিঠি আছে? হ্যাঁ ভানা, আমাকে 3 টি দিন।
কোডি ও'ডেল

2
@ কোস স্পট রয়েছে। সিঙ্ক এক্সএইচআর এখানে প্রয়োজনীয় নয়
মাইকেল ওয়েস্টকোট

1
লোকেরা যদি জাভাস্ক্রিপ্ট শুরু করার সময় আমাকে 1 টি পরামর্শের জন্য জিজ্ঞাসা করে, আমি বলি: জাভাস্ক্রিপ্টের অ্যাসিঙ্ক্রোনাস চরিত্রটি আলিঙ্গন করুন, তাতে লড়াইয়ের চেষ্টা করবেন না।
ইমানুয়েল বিলম্ব

3
এই প্রশ্নটি জিজ্ঞাসার মতো "কীভাবে আমি আমার ব্যবহারকারীর পাসওয়ার্ডগুলি সরল পাঠ্যে সংরক্ষণ করব?" অবশ্যই উত্তর আছে তবে তা করবেন না।
ভেক্টরজহান

উত্তর:


1165

থেকে jQuery এর ডকুমেন্টেশন : আপনি উল্লেখ অ্যাসিঙ্ক্রোনাস হতে বিকল্প মিথ্যা একটি সমকালীন Ajax অনুরোধ জন্য। তারপরে আপনার কলব্যাক আপনার মা ফাংশনটি এগিয়ে যাওয়ার আগে কিছু ডেটা সেট করতে পারে।

প্রস্তাবিত পরিবর্তিত হলে আপনার কোডটি কেমন দেখাচ্ছে তা এখানে রয়েছে:

beforecreate: function (node, targetNode, type, to) {
    jQuery.ajax({
        url: 'http://example.com/catalog/create/' + targetNode.id + '?name=' + encode(to.inp[0].value),
        success: function (result) {
            if (result.isOk == false) alert(result.message);
        },
        async: false
    });
}

97
ঠিক ঠিক, সিঙ্ক্রোনাস কলের জন্য (), পোস্ট (), লোড () ব্যবহার করা অসম্ভব। কেবলমাত্র অজ্যাক্স () এর "অ্যাসিঙ্ক" প্যারামিটার রয়েছে, যা "মিথ্যা" হিসাবে সেট করা যেতে পারে।
SLA80

39
@ SLA80 নাহ যেহেতু jQuery এর 1.1: stackoverflow.com/questions/6849686/...
StuperUser

16
@ কালিফাডিয়াল আমার মন্তব্যটি এসএলএ 80 এর ভুল মন্তব্যকে লক্ষ্য করে; সিঙ্ক্রোনাস কলের জন্য (), পোস্ট (), লোড () ব্যবহার করা সম্ভব।
স্টুপারউজার

9
অ্যাসিঙ্ক মিথ্যা আর jQuery> = 1.8 এর জন্য সমর্থিত নয়। Api.jquery.com/jQuery.ajax দেখুন
কেন

22
@ টেক async: falseএখনও jQuery> = 1.8 এ সমর্থিত। async: falseJqXHR ( $.Deferred) এর সাথে ব্যবহারের ক্ষমতা হ'ল হ্রাস করা হয়েছে। অন্য কথায়, একজনকে অবশ্যই উত্তরাধিকার পদ্ধতির পরিবর্তে নতুন সাফল্য / ত্রুটি / সম্পূর্ণ কলব্যাক বিকল্পগুলি ব্যবহার করতে হবে, যেমন jqXHR.done(),।
বেন জনসন

255

আপনি কল করে সিঙ্ক্রোনাস মোডে jQuery এর আজাক্স সেটআপ রাখতে পারেন

jQuery.ajaxSetup({async:false});

এবং তারপরে আপনার অ্যাজাক্স কলগুলি সম্পাদন করুন jQuery.get( ... );

তারপরে আবার একবার এটি চালু করুন

jQuery.ajaxSetup({async:true});

আমার ধারণা এটি @ অ্যাডামের পরামর্শ অনুসারে একই জিনিসটি কার্যকর করে, তবে এটি এমন কারও পক্ষে সহায়ক হতে পারে যা তাদের jQuery.get()বা jQuery.post()আরও বিস্তৃত jQuery.ajax()বাক্য গঠন পুনর্নির্মাণ করতে চায় না ।


56
এটি সত্যিই খারাপ ধারণা, আপনি কেন এটি একটি বিশ্বস্তরে সেট করবেন? এবং তারপরে এটি আনসেট করতে বাধ্য করা হবে?
হুয়ান মেন্ডেস

11
কমপক্ষে, এটি সেরা খারাপ ধারণা। এর পরিবর্তে বলার অপেক্ষা রাখে না: "এখানে কোনও উপায় ছাড়াই নয় $.ajax()"। ;)
Rzassar

136

দুর্দান্ত সমাধান! আমি লক্ষ্য করেছি যে আমি যখন এটি প্রয়োগ করার চেষ্টা করেছি যে আমি যদি সাফল্যের ধারাটিতে কোনও মান ফিরিয়ে দিয়ে থাকি তবে এটি অপরিবর্তিত হিসাবে ফিরে আসে। আমাকে এটি একটি ভেরিয়েবলে সঞ্চয় করতে হয়েছিল এবং সেই পরিবর্তনশীলটি ফিরিয়ে দিতে হয়েছিল। এই পদ্ধতিটি আমি নিয়ে এসেছি:

function getWhatever() {
  // strUrl is whatever URL you need to call
  var strUrl = "", strReturn = "";

  jQuery.ajax({
    url: strUrl,
    success: function(html) {
      strReturn = html;
    },
    async:false
  });

  return strReturn;
}

16
যে কারণ আপনার কলব্যাক বাইরে একটি মান ফিরছিলেন, না বাইরে getWhatever। সুতরাং তোমরা প্রত্যাবর্তিত কিছুই অর্থাত undefinedআপনার থেকে getWhatever
অরবিটে

6
এটা একেবারে ভুল। আপনি নিশ্চিত হতে পারবেন না যে 'স্ট্রাইটারন' ফেরার সময় একটি অ্যাসিঙ্ক্রোনাস কল শেষ হয়েছে।
টমাস ফ্রিটজ

61
এটি একটি সিঙ্ক্রোনাস কল (অ্যাসিঙ্ক: মিথ্যা)।
জেমস ইনডি

85

এই উত্তরগুলির সমস্তটি এই বিন্দুটি মিস করে যে অ্যাসিন্যাকের সাথে একটি অ্যাজাক্স কল করা হয়েছে: মিথ্যা অজ্যাক্স অনুরোধটি শেষ না হওয়া পর্যন্ত ব্রাউজারটি স্তব্ধ হয়ে যাবে। ফ্লো কন্ট্রোল লাইব্রেরি ব্যবহার করে ব্রাউজারটি ঝুলিয়ে না রেখে এই সমস্যাটি সমাধান করা হবে। এখানে ফ্রেম.জেএস সহ একটি উদাহরণ রয়েছে :

beforecreate: function(node,targetNode,type,to) {

    Frame(function(next)){

        jQuery.get('http://example.com/catalog/create/', next);
    });

    Frame(function(next, response)){

        alert(response);
        next();
    });

    Frame.init();
}

4
আপনি যদি বিশ্রামের ব্যাক-এন্ডের জন্য দ্রুত পরীক্ষার জোড় একসাথে রাখতে চান এবং কলব্যাক হেলকের চেয়ে সরলতা পছন্দ করেন তবে সিঙ্ক্রোনাস কলগুলি কার্যকর।
ডিসস্টোর্টাম

50
function getURL(url){
    return $.ajax({
        type: "GET",
        url: url,
        cache: false,
        async: false
    }).responseText;
}


//example use
var msg=getURL("message.php");
alert(msg);

10
মনে রাখবেন যে যদিও, আপনি এটি পেতে পারেন: 'মূল থ্রেডের সিঙ্ক্রোনাস এক্সএমএলএইচটিএইচপিস্ট শেষ ব্যবহারকারীর অভিজ্ঞতার ক্ষতিকারক প্রভাবের কারণে অবনমিত হয়' '
হরি

5
@ হরি মূল থ্রেড ব্যবহার না করে jQuery ব্যবহার করে একটি সিঙ্ক্রোনাস এজাক্স কল করার উপায় কী?
জোস নোবাইল

7
আমি দেখতে পাচ্ছি না যে এই উত্তরের অফার দেওয়ার মতো কিছু আছে, এটি কেবল গ্রহণযোগ্য উত্তরটি একটি ফাংশনে আবৃত এবং এর উত্তর চার বছর পরে। লোককে সি + পি পরামর্শ দেওয়া খারাপ জিনিস, কারণ ফাংশনটি এটি কী করে তা নির্দেশ করে না। "তো getURLবনাম get? কেন একজন আমার ব্রাউজারটি ঝুলিয়ে রাখে?" ইত্যাদি
moopet

27

দ্রষ্টব্য: async: falseএই সতর্কতা বার্তার কারণে আপনার ব্যবহার করা উচিত নয় :

গেকো ৩০.০ (ফায়ারফক্স ৩০.০ / থান্ডারবার্ড ৩০.০ / সিমনকি ২.২27) দিয়ে শুরু করে, ব্যবহারকারীর অভিজ্ঞতার নেতিবাচক প্রভাবের কারণে মূল থ্রেডের সিঙ্ক্রোনাস অনুরোধগুলি বাতিল করা হয়েছে।

ক্রোম এমনকি কনসোলে এ সম্পর্কে সতর্ক করে:

মূল থ্রেডের সিঙ্ক্রোনাস এক্সএমএলএইচটিপিআরকেস্টটি শেষ ব্যবহারকারীর অভিজ্ঞতার ক্ষতিকারক প্রভাবগুলির কারণে হ্রাস পেয়েছে। আরও সহায়তার জন্য https://xhr.spec.hatwg.org/ দেখুন

এটি আপনার পৃষ্ঠাটি ভেঙে দিতে পারে যদি আপনি এই জাতীয় কিছু করছেন যেহেতু এটি কোনও দিন কাজ বন্ধ করতে পারে।

আপনি যদি এটি এমনভাবে করতে চান যা এখনও মনে হয় এটি যদি সিঙ্ক্রোনাস হয় তবে এখনও অবরুদ্ধ না করে তবে আপনার async / প্রতীক্ষা করা উচিত এবং সম্ভবত কিছু অ্যাজাক্স যা নতুন ফ্যাচ এপিআইয়ের মতো প্রতিশ্রুতির উপর ভিত্তি করে তৈরি করা উচিত

async function foo() {
  var res = await fetch(url)
  console.log(res.ok)
  var json = await res.json()
  console.log(json)
}

ব্যবহারকারী যখন পৃষ্ঠাটি নেভিগেট করা বা বন্ধ করা হচ্ছে তখন পৃষ্ঠা ক্রমাগত সিঙ্ক এক্সএইচআর অস্বীকার করার বিষয়ে ক্রোম সম্পাদনা করছে working এর আগে আনলোড, আনলোড, পেজহাইড এবং ভিজিবিলিটি বিনিময় জড়িত।

যদি এটি আপনার ব্যবহারের ক্ষেত্রে হয় তবে আপনি পরিবর্তে নেভিগেটর.সেন্ডবিকনটি দেখতে চান

পৃষ্ঠার পক্ষে HTTP শিরোনাম বা iframe এর অনুমতি বৈশিষ্ট্যটির সাথে সিঙ্ক রেক অক্ষম করাও সম্ভব


নোট করুন যে কোনও অ্যাসিনক্রোনাস ত্রুটি ধরার জন্য আপনার await fetch(url)কলটি একটি try... catchব্লকে মোড়ানো উচিত ।
inostia

4
asyncশুরুর দিকে শব্দটি ব্যবহার করে ফাংশন ফু একটি প্রতিশ্রুতিতে রূপান্তরিত হয়েছে , তাই আপনি foo().catch(...)এটি ধরতেও পারেন
অন্তহীন

ক্রোম ইতিমধ্যে পৃষ্ঠার অভ্যন্তরে অ্যাসিঙ্ক এজাকাকে মঞ্জুরbeforeunload করেছে কিন্তু তারপরে নেতিবাচক প্রতিক্রিয়া bugs.chromium.org/p/chromium/issues/detail?id=952452
অ্যালেক্স

26

মনে রাখবেন যে আপনি যদি ক্রস-ডোমেন আজাক্স কল করছেন ( জেএসওএনপি ব্যবহার করে ) - আপনি এটি একযোগে করতে পারেন না , asyncপতাকাটি jQuery দ্বারা উপেক্ষা করা হবে।

$.ajax({
    url: "testserver.php",
    dataType: 'jsonp', // jsonp
    async: false //IGNORED!!
});

জেএসএনপি-কলগুলির জন্য আপনি ব্যবহার করতে পারেন:

  1. আপনার নিজের ডোমেনে এজাক্স-কল করুন - এবং ক্রস-ডোমেন কল সার্ভার-সাইড করুন
  2. আপনার কোডটি অবিচ্ছিন্নভাবে কাজ করতে পরিবর্তন করুন
  3. ফ্রেম.জেএস (এই উত্তর ) এর মতো একটি "ফাংশন সিকোয়েন্সার" লাইব্রেরি ব্যবহার করুন
  4. এক্সিকিউশন অবরুদ্ধ করার পরিবর্তে ইউআইকে অবরোধ করুন (এই উত্তর ) (আমার প্রিয় উপায়)

12

সঙ্গে async: falseআপনি নিজেকে একটি অবরুদ্ধ ব্রাউজার পান। অ-ব্লকিং সিঙ্ক্রোনাস সমাধানের জন্য আপনি নিম্নলিখিতগুলি ব্যবহার করতে পারেন:

ES6 / ECMAScript2015

ES6 এর সাহায্যে আপনি একটি জেনারেটর এবং সহ লাইব্রেরি ব্যবহার করতে পারেন :

beforecreate: function (node, targetNode, type, to) {
    co(function*(){  
        let result = yield jQuery.get('http://example.com/catalog/create/' + targetNode.id + '?name=' + encode(to.inp[0].value));
        //Just use the result here
    });
}

ES7

ES7 এর সাহায্যে আপনি কেবল asyc অপেক্ষা করতে পারেন:

beforecreate: function (node, targetNode, type, to) {
    (async function(){
        let result = await jQuery.get('http://example.com/catalog/create/' + targetNode.id + '?name=' + encode(to.inp[0].value));
        //Just use the result here
    })(); 
}

3
async functionখেয়াল করুন আপনি কেবল পূর্বে তৈরি করতে beforecreate: async function(....এবং স্ব- চালিত অ্যাসিঙ্ক ফাংশনটি সরিয়ে ফেলতে পারেন
ড্যানিয়েল ক্রোম

12

আমি কার্সিওনের দেওয়া উত্তরটি ব্যবহার করে এটিকে জেএসএন ব্যবহার করতে সংশোধন করেছি।

 function getUrlJsonSync(url){

    var jqxhr = $.ajax({
        type: "GET",
        url: url,
        dataType: 'json',
        cache: false,
        async: false
    });

    // 'async' has to be 'false' for this to work
    var response = {valid: jqxhr.statusText,  data: jqxhr.responseJSON};

    return response;
}    

function testGetUrlJsonSync()
{
    var reply = getUrlJsonSync("myurl");

    if (reply.valid == 'OK')
    {
        console.dir(reply.data);
    }
    else
    {
        alert('not valid');
    }    
}

আমি যোগ ডাটাটাইপ এর 'json' এবং পরিবর্তন .responseText করার responseJSON

আমি প্রত্যাবর্তিত অবজেক্টের স্ট্যাটাসটেক্সট সম্পত্তি ব্যবহার করেও স্থিতি পুনরুদ্ধার করেছি । দ্রষ্টব্য, এটি জাজোন বৈধ কিনা তা নয়, এটি আজাক্স প্রতিক্রিয়াটির স্থিতি।

ব্যাক-এন্ডে প্রতিক্রিয়াটি সঠিক (সুগঠিত) জেএসএনে ফিরিয়ে দিতে হবে, অন্যথায় প্রত্যাবর্তিত অবজেক্টটি সংজ্ঞায়িত হবে।

মূল প্রশ্নের উত্তর দেওয়ার সময় দুটি দিক বিবেচনা করতে হবে। একটি অ্যাজাক্সকে সিঙ্ক্রোনালি পারফরম্যান্স করতে বলছে ( অ্যাসিঙ্ক সেট করে : ভুয়া ) এবং অন্যটি কলব্যাক ফাংশন না করে কলিং ফাংশনের রিটার্ন স্টেটমেন্টের মাধ্যমে প্রতিক্রিয়া ফিরিয়ে দিচ্ছে।

আমি এটি পোস্টার দিয়ে চেষ্টা করেছিলাম এবং এটি কাজ করে।

আমি জিইটিটিকে পোস্টে পরিবর্তন করেছি এবং ডেটা যুক্ত করেছি: পোস্টডেটা

function postUrlJsonSync(url, postdata){

    var jqxhr = $.ajax({
        type: "POST",
        url: url,
        data: postdata,
        dataType: 'json',
        cache: false,
        async: false
    });

    // 'async' has to be 'false' for this to work
    var response = {valid: jqxhr.statusText,  data: jqxhr.responseJSON};

    return response;
}

মনে রাখবেন, উপরে কোড শুধুমাত্র ক্ষেত্রে যেখানে কাজ করে ASYNC হয় মিথ্যা । যদি আপনি অ্যাসিঙ্ক সেট করতে চান : সত্যিকার অর্থে প্রত্যাবর্তিত অবজেক্ট jqxhr এজেএক্স কল রিটার্নের সময় বৈধ হবে না, কেবল পরে যখন অ্যাসিঙ্ক্রোনাস কলটি শেষ হবে, তবে প্রতিক্রিয়া ভেরিয়েবল সেট করতে এটি অনেক দেরিতে ।


7

এটি উদাহরণ:

$.ajax({
  url: "test.html",
  async: false
}).done(function(data) {
   // Todo something..
}).fail(function(xhr)  {
   // Todo something..
});

1
async falseএকটি প্রতিশ্রুতি ভিত্তিক সমাধান সঙ্গে ব্যবহার করার কী আছে । এটি কোনও লাভের জন্যই কেবল ব্রাউজারটিকে লক করে দেয়।
কোডিং হয়ে গেছে

2
@ গনকোডিং এমন পরিস্থিতি রয়েছে যেখানে কোডগুলি যথাযথ ক্রমে কার্যকর করতে চায়, সেই পরিস্থিতিতে আমরা অ্যাসিঙ্কটি মিথ্যা ব্যবহার করতে পারি
নিক্কি

1
@ নিক্কি: এগুলি যথাযথভাবে চালানোর উপায় নয় । অ্যাসিঙ্ক প্রতিশ্রুতি (যা ajaxইতিমধ্যে কলগুলি কল করে) এবং ( .then()বা done()এটি ইতিমধ্যে প্রদর্শিত হিসাবে) ব্যবহার করুন। ব্রাউজারটিকে লক করা খুব দুর্বল ব্যবহারকারীর অভিজ্ঞতা। যেমনটি আমি বলেছি যে async: falseএই উদাহরণটি থাকা সময়ের সম্পূর্ণ অপচয়।
কোডিং হয়ে গেছে

4

প্রথমে আমাদের should .ajax এবং কখন আমরা aj .get / $। পোষ্ট ব্যবহার করি তা বুঝতে হবে $

যখন আমাদের এজ্যাক্স অনুরোধের যেমন নিম্ন শিরোনামের অনুরোধ, ক্যাশে সেটিংস, সিঙ্ক্রোনাস সেটিংস ইত্যাদির উপর নিম্ন স্তরের নিয়ন্ত্রণ প্রয়োজন তখন আমাদের aj .জ্যাক্সের জন্য যাওয়া উচিত।

get .get / post। পোস্ট: যখন আমাদের এজ্যাক্স অনুরোধের উপর নিম্ন স্তরের নিয়ন্ত্রণের প্রয়োজন হয় না O কেবলমাত্র সার্ভারে ডেটা পোস্ট / পোস্ট করুন। এটা সংক্ষিপ্ত

$.ajax({
  url: url,
  data: data,
  success: success,
  dataType: dataType
});

এবং তাই আমরা features .get / post। পোস্টের সাথে অন্যান্য বৈশিষ্ট্যগুলি (সিঙ্ক, ক্যাশে ইত্যাদি) ব্যবহার করতে পারি না।

সুতরাং এজ্যাক্স অনুরোধের চেয়ে নিম্ন স্তরের নিয়ন্ত্রণের (সিঙ্ক, ক্যাশে ইত্যাদি) জন্য আমাদের we .জ্যাক্সের জন্য যাওয়া উচিত

 $.ajax({
     type: 'GET',
      url: url,
      data: data,
      success: success,
      dataType: dataType,
      async:false
    });

2

এটি jQuery সহ ASYNC অনুরোধগুলির জন্য আমার সাধারণ বাস্তবায়ন। আমি আশা করি এটি যে কাউকে সাহায্য করবে।

var queueUrlsForRemove = [
    'http://dev-myurl.com/image/1', 
    'http://dev-myurl.com/image/2',
    'http://dev-myurl.com/image/3',
];

var queueImagesDelete = function(){

    deleteImage( queueUrlsForRemove.splice(0,1), function(){
        if (queueUrlsForRemove.length > 0) {
            queueImagesDelete();
        }
    });

}

var deleteImage = function(url, callback) {
    $.ajax({
        url: url,
        method: 'DELETE'
    }).done(function(response){
        typeof(callback) == 'function' ? callback(response) : null;
    });
}

queueImagesDelete();

2

কারণ XMLHttpReponseসিঙ্ক্রোনাস অপারেশন অবহেলিত হয়েছে আমি নীচের সমাধানটি নিয়ে এসেছি যা মোড়ানো XMLHttpRequest। এটি প্রকৃতপক্ষে অ্যাসক্রোনারাস থাকাকালীন এজেএক্স প্রশ্নের ক্রিয়াকলাপের অনুমতি দেয় যা একক ব্যবহারের সিএসআরএফ টোকেনের জন্য খুব কার্যকর।

এটি স্বচ্ছও তাই jQuery এর মতো লাইব্রেরিগুলি নির্বিঘ্নে চলবে।

/* wrap XMLHttpRequest for synchronous operation */
var XHRQueue = [];
var _XMLHttpRequest = XMLHttpRequest;
XMLHttpRequest = function()
{
  var xhr   = new _XMLHttpRequest();
  var _send = xhr.send;

  xhr.send = function()
  {
    /* queue the request, and if it's the first, process it */
    XHRQueue.push([this, arguments]);
    if (XHRQueue.length == 1)
      this.processQueue();
  };

  xhr.processQueue = function()
  {
    var call = XHRQueue[0];
    var xhr  = call[0];
    var args = call[1];

    /* you could also set a CSRF token header here */

    /* send the request */
    _send.apply(xhr, args);
  };

  xhr.addEventListener('load', function(e)
  {
    /* you could also retrieve a CSRF token header here */

    /* remove the completed request and if there is more, trigger the next */
    XHRQueue.shift();
    if (XHRQueue.length)
      this.processQueue();
  });

  return xhr;
};

-1

যেহেতু মূল প্রশ্ন ছিল jQuery.get, এটা এখানে উল্লেখ যে (উল্লিখিত মূল্য এখানে ) এক পারে ব্যবহার async: falseএকটি $.get()কিন্তু আদর্শভাবে এড়াতে এরপর থেকে এটি অ্যাসিঙ্ক্রোনাস XMLHTTPRequestঅবচিত (এবং ব্রাউজার একটি সতর্কবার্তা দিতে পারে):

$.get({
  url: url,// mandatory
  data: data,
  success: success,
  dataType: dataType,
  async:false // to make it synchronous
});

1
কেন এই হ্রাস করা হয়?
ওরফ 51

-2

asyn:falseএটি সিঙ্ক্রোনাস করতে এজ্যাক্স অনুরোধ সেট করুন ।

কোড নমুনা এখানে:

 $.ajax({
    url: 'some_url',
    type: "GET",
    async: false,
    cache: false,
    dataType: "JSON",
    data: { 
      "p1": v1, 
      "p2": v2
    },
    success: function(result) {
    }  
  }
});

এটি স্ক্রিনটিকে প্রতিক্রিয়াহীন করতে পারে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.