等待异步javascript函数

Wait for Asynchronous javascript function

本文关键字:函数 javascript 异步 等待      更新时间:2023-09-26

我看到过关于这个问题的类似问题。我对javascript还很陌生,但我搞不懂。

我有一个函数,它调用另一个函数。

sayHello()有一个异步调用。

var hello_message = null;
function invokeSayHello(msg) {
    sayHello(msg);
    //next action
    return hello_message;
} 
function sayHello(msg) {
    // simulate async call 
    setTimeout(function(){hello_message = msg + " World";},1000);
}

在这种情况下,hello_message返回为null。在invokeSayHello()函数中执行下一个操作行之前,我该如何等待异步调用完成,这样返回的hello_message就不会为null。

我想我应该使用回调,但不知道如何做。此外,我使用executeScript()/Senium 从java文件调用invokeSayHello()

感谢所有的帮助。

您应该在回调中使用结果。您不能/不应该等待异步函数完成。异步模式假设您使用回调。

像这样:

function invokeSayHello(msg) {
    sayHello(msg);
} 
function sayHello(msg) {
    // simulate async call 
    setTimeout(function(){
        var hello_message = msg + " World";
        // Here you can process the result, like alerting it for example or
        // passing it to another function
        alert(hello_message);
    }, 1000);
}

因此,基本上在异步编程中,您忘记了关键字return,并开始将回调传递给javascript函数,以便调用者可以订阅这些回调以及他想对回调中的结果执行的任何操作。。