gpt4 book ai didi

javascript - JavaScript 中的回调问题

转载 作者:行者123 更新时间:2023-12-02 15:22:03 24 4
gpt4 key购买 nike

我正在尝试从函数 one() 执行 WCF 服务调用。只有完成后,我才希望执行函数 two() 。我遇到的问题是,在函数 one() 完成执行并且 WCF 服务返回结果之前调用函数 two() 。请问我该如何解决这个问题?我正在使用回调函数,所以我不知道为什么,因为响应不超过3秒。

<script type="text/javascript">

var jsonGetFileResult = "";

function one(callback) {
setTimeout(function() {
//var jsonGetFileResult = "";
console.log('01: into one');
$.ajax({
type: 'GET',
url: ‘http: //wcf.google.com’, //this is the wcf call
contentType: "application/json; charset=utf-8",
dataType: 'json',
data: {},
timeout: 10000,
success: function(data) {
jsonGetFileResult = stringifyNewsletter(data);
console.log('03: ' + jsonGetFileResult);
},
error: function(data) {
alert(error);
}
});
callback();
}, 3000);
}

function stringifyNewsletter(data) {
var removeHeader = JSON.stringify(data);
var file = removeHeader.split('"');
console.log('02: ' + file[3]);
return file[3];
}

function two(linkToNewsletter) {
window.open(linkToNewsletter, '_blank', 'location=yes');
return false;
}

/* now we make use of the callback */
one(function() {
alert(jsonGetFileResult);
// "one" triggers "two" as soon as it is done, note how "two" is a parameter
two(jsonGetFileResult);
});
</script>

最佳答案

您正在 ajax“成功”函数的外部调用回调。 $.ajax() 调用是异步 - 在启动 HTTP 请求后,该调用基本上会立即返回到您的代码,而无需等待其完成。

如果你移动线路

    callback();

到“成功”处理程序内部,然后该处理程序将 HTTP 请求完成后运行。

关于javascript - JavaScript 中的回调问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33958236/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com