javascript - 这款异步js代码需要怎么改?
伊谢尔伦
伊谢尔伦 2017-04-11 11:50:47
[JavaScript讨论组]

以下代码删掉了多余内容,调用方法会得到modal==null,如果必须使用异步请求,且modal实例在异步请求成功后生成,如何改变代码可以使得调用remoteModalOp得到modal对象?

function remoteModalOp(url, title, size) {
    if (!url) return;
    var modal = null;
    $.get(url, '', function(data) {
        if (data) {
            modal = bootbox.dialog({
                title: title,
                message: data,
                size: size,
                className: 'over'
            });
        }
    })
    return modal;
}

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(2)
伊谢尔伦

让remoteModalOp返回一个defer对象,请求完成后defer.reslove(modal)

大家讲道理

实际上,js 中你很少能看到有同步的代码,可以认为 js 是面向回调的语言,所以你需要在 remoteModalOp 中添加一个参数,一个 callback:

function remoteModalOp(url, title, size, callback) {
    if (!url) return;
    var modal = null;
    $.get(url, '', function(data) {
        if (data) {
            modal = bootbox.dialog({   // 假设这是一个同步的方法
                title: title,
                message: data,
                size: size,
                className: 'over'
            });
            callback(modal);
        }
    })
}

可以通过以下代码调用。

remoteModalOp(url, title, size, function() {
// do something;
});

当然这里忽略了一些 err 的处理。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号