Сценарий будет выполнен так:
- Внутри
ShowIP()
, tor_proxy.request()
отправляет запрос на http://ident.me. - Без ожидания ответас http://ident.me, выполняется функция
Renew()
. tor_proxy.renewTorSession()
может быть асинхронной функцией.Если это так, то после того, как он начнется, следующий ShowIP()
будет выполнен без ожидания завершения renewTorSession()
.
В зависимости от того, как быстро http://ident.me отвечает и как быстро renewTorSession()
В итоге результаты могут отличаться.
Чтобы выполнить эти функции в правильном порядке, вы можете выполнить поиск по следующим ключевым словам:
Пример использования promise
, async
и await
:
var tor_proxy = require('tor-request');
tor_proxy.setTorAddress('localhost', 9050);
tor_proxy.TorControlPort.password = 'password';
function ShowIP() {
return new Promise((resolve, reject) => {
tor_proxy.request('http://ident.me', function (err, response, body) {
if (err) reject(err);
else if (response.statusCode !== 200) reject('response.statusCode: ' + response.statusCode);
else {
console.log(body);
resolve();
}
});
});
}
function Renew() {
return new Promise((resolve, reject) => {
tor_proxy.renewTorSession(() => {
console.log('renewed');
resolve();
});
});
}
async function testFunction() {
// Await makes sure the returned promise completes before proceeding.
// Note that await keyword can only be used inside async function.
try {
await ShowIP();
await Renew();
await ShowIP();
console.log('done!');
} catch (error) {
console.log(error);
}
}
testFunction();