在 javascript 中同步调用异步函数
To call an asynchronous function synchronously in javascript
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"
所以当我调用 callThis() 时,我得到的输出为:
"Success"
"failure"
但我需要输出为
"Success"
"KATE success"
你们能给我一个解决方案吗,不是回调或超时,但在从同步更改为异步时仍然是一种有效的技术
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!!!");
}
});
}
解决方案不是同步调用它,而是利用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
});
}
请注意,由于同源策略
,获取 google.com
将失败
您可以使用 jQuery returns (.done
) 的 promise 接口,如下所示:
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
});
}
即使现在考虑到 ajax 的异步性质,我仍然得到如下输出:
KATE SPADE \n
KATE success
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" 所以当我调用 callThis() 时,我得到的输出为: "Success" "failure" 但我需要输出为 "Success" "KATE success"
你们能给我一个解决方案吗,不是回调或超时,但在从同步更改为异步时仍然是一种有效的技术
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!!!");
}
});
}
解决方案不是同步调用它,而是利用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
});
}
请注意,由于同源策略
,获取google.com
将失败
您可以使用 jQuery returns (.done
) 的 promise 接口,如下所示:
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
});
}
即使现在考虑到 ajax 的异步性质,我仍然得到如下输出:
KATE SPADE \n
KATE success