Javascript promise js函数调用同一类中的另一个函数
我正试图建立一个自定义的日志,我正试图做什么,因为我采取了截图后,我想调用我的日志功能,以记录图像名称。当我在承诺中时,它不能看到类中的所有函数Javascript promise js函数调用同一类中的另一个函数,javascript,node.js,Javascript,Node.js,我正试图建立一个自定义的日志,我正试图做什么,因为我采取了截图后,我想调用我的日志功能,以记录图像名称。当我在承诺中时,它不能看到类中的所有函数 module.exports = { takeScreenshot: function(driver, filename) { driver.takeScreenshot().then(function(data) { name = filename || 'ss.png'; var sc
module.exports = {
takeScreenshot: function(driver, filename) {
driver.takeScreenshot().then(function(data) {
name = filename || 'ss.png';
var screenshotPath = 'results/screenshots/';
fs.writeFileSync(screenshotPath + name, data, 'base64');
return screenshotPath + name;
}).then(function(e) {
this.logger(e, "true");
});
},
logger: function(log, screenshot) {
isScreenshot = screenshot || "false";
var obj = {};
if (isScreenshot == "true") {
obj[testName.replace(/ /g,'')] = {
logs: "",
screenshot: "<img src=\"" +log+ "\" class=\"test-img\" />"
};
logger.push(obj);
} else {
obj[testName.replace(/ /g,'')] = {
logs: "<span class=\"test-log\">" +log + "</span>",
screenshot: ''
};
logger.push(obj);
}
}
}
module.exports={
截图:函数(驱动程序、文件名){
driver.takeScreenshot().then(函数(数据){
name=filename | |“ss.png”;
var screenshotPath='results/screenshots/';
fs.writeFileSync(屏幕快照路径+名称,数据'base64');
返回屏幕快照路径+名称;
}).然后(函数(e){
本条(e,“真实”);
});
},
记录器:功能(日志、屏幕截图){
isScreenshot=屏幕截图| |“假”;
var obj={};
如果(isScreenshot==“真”){
obj[testName.replace(//g',)]={
日志:“,
截图:“
};
推(obj);
}否则{
obj[testName.replace(//g',)]={
日志:“+log+”,
屏幕截图:“”
};
推(obj);
}
}
}
基本上,它没有看到记录器方法。我错过了什么?谢谢
此
在然后的
回调上下文中是不同的。您需要创建一个闭包才能使其工作
这是一篇关于闭包的好文章
takeScreenshot: function(driver, filename) {
var self = this;
driver.takeScreenshot().then(function(data) {
name = filename || 'ss.png';
var screenshotPath = 'results/screenshots/';
fs.writeFileSync(screenshotPath + name, data, 'base64');
return screenshotPath + name;
}).then(function(e) {
self.logger(e, "true");
});
},
您的
此
不同。有关此的更多信息,请阅读
takeScreenshot: function(driver, filename) {
var self = this;
driver.takeScreenshot().then(function(data) {
name = filename || 'ss.png';
var screenshotPath = 'results/screenshots/';
fs.writeFileSync(screenshotPath + name, data, 'base64');
return screenshotPath + name;
}).then(function(e) {
self.logger(e, "true");
});
},