如果此函数是返回类型,则从回调函数中检索数据

时间:2017-11-23 07:48:27

标签: javascript javascript-events

function getPageDetails(callback,filterlink) { 
        var message=1+2;
        callback(message,filterlink); 
    }); 
};

function test(message,filterlink)
{
    var data=message+1;
    return data
}

function test1(filterlink)
{
    var testdata=getPageDetails(test,filterlink)
    alert(testdata)
}

在这个例子中,当我使用参数调用test1(filterlist)方法并且想要调用回调函数时。我确实在testdata变量中获得了任何数据。它应该是4警报。有人可以帮忙吗?

3 个答案:

答案 0 :(得分:0)

利用承诺,这将解决您的问题

let p1 = new Promise(
       (resolve, reject) => {
            log.insertAdjacentHTML('beforeend', thisPromiseCount +
                ') Promise started (<small>Async code started</small>)<br/>');
            // This is only an example to create asynchronism
            window.setTimeout(
                function() {
                    // We fulfill the promise !
                    resolve(thisPromiseCount);
                }, Math.random() * 2000 + 1000);
        }
    );

    // We define what to do when the promise is resolved with the then() call,
    // and what to do when the promise is rejected with the catch() call
    p1.then(
        // Log the fulfillment value
        function(val) {
            log.insertAdjacentHTML('beforeend', val +
                ') Promise fulfilled (<small>Async code terminated</small>)<br/>');
        })
    .catch(
        // Log the rejection reason
       (reason) => {
            console.log('Handle rejected promise ('+reason+') here.');
        });

完整信息:promise

答案 1 :(得分:0)

您的函数getPageDetails并未返回任何内容。

执行callback(message, filterlink)时,您需要返回结果,以便var testdata获得分配值:

function getPageDetails(callback, b) {
    [...]
    return callback(...);
}

答案 2 :(得分:0)

如果您返回评论中建议的回调,并删除第一个功能中的function getPageDetails(callback, filterlink) { var message = 1 + 2; return callback(message, filterlink); } function test(message, filterlink) { var data = message + filterlink; return data } function test1(filterlink) { var testdata = getPageDetails(test, filterlink) alert(testdata) } test1(1);。 我强烈建议您使用Pranay Rana的解决方案,因为它更好。如果你使用js,那么值得投资于对promises的理解!

plot()