账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    js获取函数同步执行的返回值问题
    26
    0

    这是一段上传代码,使用了promise

    function upload(file, token) {
        return new Promise(function (resolve, reject) {
            let xhr = new XMLHttpRequest();
            xhr.responseType = 'json';
            xhr.open('POST', up_url, true);
            let formData;
            formData = new FormData();
            formData.append('token', token);
            formData.append('file', file);
            formData.append('x:timestamp', Math.round(new Date().getTime() / 1000));
            xhr.send(formData);
            xhr.onreadystatechange = function (response) {
                if (xhr.readyState == 4 && xhr.status == 200) {
                    resolve(base_url + xhr.response.key);
                } else if (xhr.status != 200 && xhr.responseText) {
                    reject(new Error(xhr.responseText));
                }
            };
        });
    }

    直接这样用可以获取到返回值,当我想把这一段再封装成一个函数的时候获取不到返回值了。

        upload(file, token).then(function onFulfilled(imgurl) {
            console.log(imgurl);
        }).catch(function onRejected(error) {
            console.error(error);
            alert('上传失败' + error);
        });

    这样:

    function upload_img(file, token) {
    var url = 'init_imgurl';
        upload(file, token).then(function onFulfilled(imgurl) {
            url = imgurl;
            return url;
        }).catch(function onRejected(error) {
            console.error(error);
            alert('上传失败' + error);
        });
        return url;
    }

    结果这里返回的是init_imgurl,如何获取嵌套函数的同步执行返回值呢?

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部