function myAsyncFunction(url) {
return new Promise((resolve, reject) => {
const xhr = new XMLHttpRequest();
xhr.open("GET", url);
xhr.onload = () => resolve(xhr.responseText);
xhr.onerror = () => reject(xhr.statusText);
xhr.send();
});
}
受到上述启发,于是如下处理http.get()方法返回promise:
const linktestbyid = async function(querydata, queryday, callback) {
const rs = await mongo.mongoqueryPromise(querydata, 'ClickLog', queryday, conf.mongo.dbstr);
//save click log info
const clickresult = saveclickarray(rs, querydata, queryday);
const clickid = clickresult[0]['clickid'];
const callbackurl = clickresult[2]['callbackurl'];
//sync to advertiser side callback url
return new Promise((resolve, reject) => {
http.get(callbackurl, function(req, response) {
var html = '';
req.on('data', function(data) {
html += data;
});
req.on('end', async() => {
console.log("adv side callback result:", html);
const result = await saveeventarray(html, querydata, clickid, clickresult);
debug("linktestbyid final rs:", result);
// callback(result);
resolve(result);
});
});
});
}