我找到了这个nodejs包,我的工作代码正确,结果正确。但是,我不知道如何将这些结果传递给其他函数。我想要的是:从网页获取一些信息,将其存储在变量中,传递给信号函数并发送信号通知(我使用的是信号节点包)。 这是我现在的代码:
osmosis
.get('url')
.find('.content_body_left li')
.set('day')
.follow('a@href')
.find('table tr')
.delay(1000)
.set({
city: 'td[2]',
street: 'td[3]',
time:'td[4]'
})
.data(function(document) {
var city = document['city']; // <== this variable I want to get
return city;
})
var firstNotification = new OneSignal.Notification({
contents: {
// en: "test msg"
en: city // <== this is where I want to put variable
}
});
问题是我无法从document['city'];
中获取.data(function(document) { ... })
值,因此我无法在代码中的任何位置使用它。
编辑:
我在.data(function(document) { ... })
firstNotification.setIncludedSegments(['All']);
firstNotification.setExcludedSegments(['Inactive Users']);
firstNotification.setParameter('data', {"abc": "123", "foo": "bar"});
myClient.sendNotification(firstNotification, function (err, httpResponse,data) {
if (err) {
console.log('Something went wrong...');
} else {
console.log(data, httpResponse.statusCode);
}
});
所以,如果我把var firstNotification = new OneSignal.Notification({ ... });
说成:“firstNotification未定义”。但是,如果我将所有代码放在.data(function(document) { ... })
或承诺中,它就会起作用。但是,有没有办法将其他一半的代码保留在.data(或promise)之外?
答案 0 :(得分:2)
您可以包装逻辑以获取Promise中的city
:
var promise = new Promise(resolve => {
osmosis
.get('url')
.find('.content_body_left li')
.set('day')
.follow('a@href')
.find('table tr')
.delay(1000)
.set({
city: 'td[2]',
street: 'td[3]',
time:'td[4]'
})
.data(function(document) {
var city = document['city']; // <== this variable I want to get
resolve(city);
})
});
promise.then(city => {
var firstNotification = new OneSignal.Notification({
contents: {
// en: "test msg"
en: city // <== this is where I want to put variable
}
});
})
答案 1 :(得分:0)
尝试
osmosis
.get('url')
.find('.content_body_left li')
.set('day')
.follow('a@href')
.find('table tr')
.delay(1000)
.set({
city: 'td[2]',
street: 'td[3]',
time:'td[4]'
})
.data(function(document) {
var firstNotification = new OneSignal.Notification({
contents: {
// en: "test msg"
en: document.city // <== this is where I want to put variable
}
});
})