2017-01-30 2 views
1

вход значения переменного src внутри и снаружи .then.then, и я заметить, что src имеют различные значения, интересно, почему:Значения переменного внутри .then объема отличается от значения переменного за пределами сферы .then

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; 
    } 

UPDATE

Я закончил тем, что делал это, который работает отлично:

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); 
    }) 
} 
+1

См. Также комментарии и ответ на этот вопрос: http://stackoverflow.com/q/41788626/1078886 –

ответ

1

Очень простой ответ: Внешняя часть src переменная запускается первой и печатает неопределенные. Поскольку HTTP-вызов еще не завершен, и, следовательно, значение не назначено. .then занимает небольшое количество времени.

+0

Интересно, какая распространенная практика для работы – user3405291

Смежные вопросы