Я хочу, чтобы переменная fileContent снаружи, но он говорит неопределенный - PullRequest
0 голосов
/ 08 июня 2019

Я получаю данные из обещания, когда оно выполнено, но я не смог найти способ использования этих данных, код очистит больше.кроме того, мне не ясно, что «this» в коде ссылается на какой объект.По мне, это ссылка на глобальный объект.

p.then(function(data){this.fileContent = data});
 return res.render('experiments',{pageTitle:'Experiments',user:req.session.email,data:this.fileContent}); 

данные будут назначены this.fileContent, но в функции res.render, когда я использую this.fileContent, он сообщает undefined, почему это так

1 Ответ

0 голосов
/ 08 июня 2019

используйте функцию стрелки, в вашем примере, если вы отлаживаете и видите, в вашем примере функция привязывает себя к этому, а функция стрелки на самом деле НЕ привязывает свою собственную.Функции стрелок лексически связывают свой контекст, так что это фактически относится к исходному контексту.

p.then((data)=>{this.fileContent = data});

или просто вы можете использовать переменную вне этой области и назначать ей данные, как в вашем коде

let resp ;
p.then(function (data){resp = data}); // do not use this
// process resp here
...