we are trying to change some calls in the application from sync to async then i read the post
" Call An Asynchronous Javascript Function Synchronously " so when i call the callThis() I am getting the output as: "Success" "failure" but I need the output as "Success" "KATE success"
Can you guys suggest me a solution for this, not the callback or timeout but still an efficient technique when changed from sync to async
function callThis()
{
if(kate())
{
console.log("KATE success")
}
else
{
console.log("failure")
}
}
function kate()
{
$.ajax({
url: "www.google.com" (http://www.google.com),
type: 'get',
async: true,
timeout: 10000,
success: function (data) {
console.log("Success");
},
error: function () {
console.log("FAIL!!!");
}
});
}
The solution isn't to call it synchronously, but to work with the asynchronous nature of ajax
function callThis() {
kate().done(function(result) {
if ( result ) {
console.log("KATE success")
} else {
console.log("failure")
}
}).fail(function(error) {
console.log(error);
});
}
function kate() {
return $.ajax({
url: "www.google.com",
type: 'get',
async: true,
timeout: 10000
});
}
note that getting google.com
will fail due to the same-origin policy
You could use the promise interface that jQuery returns ( .done
), like this:
function callThis() {
kate().done(function(result) {
if ( result ) {
console.log("KATE success")
} else {
console.log("failure")
}
}).fail(function(error) {
console.log(error);
});
console.log("KATE SPADE")
}
function kate() {
return $.ajax({
url: "www.google.com",
type: 'get',
async: true,
timeout: 10000
});
}
Even the asynchronous nature of ajax is now taken into account, I am still getting the output as:
KATE SPADE \\n
KATE success
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.