Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 变量值在内部。然后作用域与变量值在外部不同。然后作用域_Javascript - Fatal编程技术网

Javascript 变量值在内部。然后作用域与变量值在外部不同。然后作用域

Javascript 变量值在内部。然后作用域与变量值在外部不同。然后作用域,javascript,Javascript,我将src变量的值记录在内部。然后和外部。然后我观察到src有不同的值,我想知道为什么: getUserPicSrc(){ var src; var db=new window.PouchDB('http://127.0.0.1:5984/passport-test'); db.getAttachment(this.props.store.user._id,'pic.jpg').then(blob=>{ src=win

我将
src
变量的值记录在
内部。然后
外部。然后
我观察到
src
有不同的值,我想知道为什么:

getUserPicSrc(){
        var src;
        var db=new window.PouchDB('http://127.0.0.1:5984/passport-test');
        db.getAttachment(this.props.store.user._id,'pic.jpg').then(blob=>{
            src=window.blobUtil.createObjectURL(blob);
            console.log('src inside then: '+src);// src inside then: blob:http://127.0.0.1:10002/ed1cf453-3902-4064-8966-e74c4a1ee6b4
        }).catch(error=>{
            console.log(error);
        })
        console.log('src outside then: '+src);// src outside then: undefined
        return src;
    }

更新

最后我做了一个很好的工作:

setUserPicSrc(){
    var db=new window.PouchDB('http://127.0.0.1:5984/passport-test');
    db.getAttachment(this.props.store.user._id,'pic.jpg').then(blob=>{
        var url=window.blobUtil.createObjectURL(blob);
        console.log('url: '+url);
        document.getElementById('userPic').src=url;
    }).catch(error=>{
        console.log(error);
    })
}
答案很简单:
外部
src
变量首先运行并打印未定义。因为http调用尚未完成,因此未分配值<代码>。然后会花费少量时间

另请参见此问题的评论和答案: