我正在尝试在NodeJS上创建一个执行集成的服务-目前,我所拥有的只是一个初始化函数和另一个名为execute的
。但是,我无法在“初始化”函数中调用“执行”函数,该怎么办?
预先感谢
我已经尝试过:
this.execute();
SchedulerService.execute();
execute();
var _this = this;
和_this.execute();
scheduleJon(..., function(execute){
内的参数import schedulerConf from '../../config/scheduler';
import request from 'request';
import schedule from 'node-schedule';
import dateformat from 'dateformat';
let interations = 0;
const SchedulerService = function(){
return {
initialize: async () => {
console.log(`***** Starting Scheduler on ${dateformat(new Date(), "dd-mm-YYYY h:MM:ss")}`);
var j = schedule.scheduleJob('*/1 * * * *', function(){
console.time('Scheduler execution time');
if(interations === 0){
console.log(`Setting scheduler runtime to full time.`);
}
interations++;
SchedulerService.execute();
console.log(`Job executed ${interations} times.`);
console.timeEnd('Scheduler execution time');
});
},
execute: async () => {
var options = {
url: 'http://example.com',
method: 'GET'
}
return new Promise(function (resolve, reject) {
request(options, function (error, res, body) {
if (!error && res.statusCode == 200) {
console.log
resolve(JSON.parse(body));
} else {
reject(error);
}
});
});
}
}
}
export default new SchedulerService();
答案 0 :(得分:0)
您不能调用<v-footer
app
inset
fixed
>
<v-row align="center">
<v-col class="shrink px-1">
<v-tooltip top>
<template v-slot:activator="{ on }">
<v-btn
icon
outlined
v-on="on"
@click="dryRun"
>
<v-icon>flash_on</v-icon>
</v-btn>
</template>
<span>Tooltip</span>
</v-tooltip>
</v-col>
</v-row>
</v-footer>
,因为使用箭头功能时,this.execute()
关键字是指封闭的函数上下文,而不是对象上下文(即您要查找的内容)。
为此,您必须使用简单的函数。
this
答案 1 :(得分:0)
我认为,如果在execute
语句之外定义return
函数,就可以解决问题。
import schedulerConf from '../../config/scheduler';
import request from 'request';
import schedule from 'node-schedule';
import dateformat from 'dateformat';
let interations = 0;
const SchedulerService = function(){
const execute = async () => {
var options = {
url: 'http://example.com',
method: 'GET'
}
return new Promise(function (resolve, reject) {
request(options, function (error, res, body) {
if (!error && res.statusCode == 200) {
console.log
resolve(JSON.parse(body));
} else {
reject(error);
}
});
});
}
return {
initialize: async () => {
console.log(`***** Starting Scheduler on ${dateformat(new Date(), "dd-mm-YYYY h:MM:ss")}`);
var j = schedule.scheduleJob('*/1 * * * *', function(){
console.time('Scheduler execution time');
if(interations === 0){
console.log(`Setting scheduler runtime to full time.`);
}
interations++;
execute();
console.log(`Job executed ${interations} times.`);
console.timeEnd('Scheduler execution time');
});
},
execute
}
}
export default new SchedulerService();
答案 2 :(得分:0)
您的函数返回其他函数,这意味着该函数应在您访问内部之前运行。 这意味着您可以这样称呼它。
SchedulerService().execute();