@Victor0816

Как дождаться ответа функции?

привет
пытаюсь передать значение fingerprintjs2 с помощью ajax
но, на вычесление hash уходит како-то время и в ajax прилетает пустая переменная
как можно дождаться выполнения и только потом отправить ajax?

Fingerprint2.get(function (components) {
              var values = components.map(function (component) { return component.value })
              var murmur = Fingerprint2.x64hash128(values.join(''), 31);
              return murmur;
          });

$.ajax({
          type: "post",
          url: "",
          dataType:"json",
          data: data
          success: function (res) {

          },
          error: function({

          }
      
      });
  • Вопрос задан
  • 105 просмотров
Пригласить эксперта
Ответы на вопрос 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Судя по исходникам (если я нашёл достаточно старую версию, как у вас), метод get() вызывает переданную в него функцию, и первым параметром в неё – уже готовый хэш (строку). И только вторым параметром массив компонентов. Так что зря вы затеяли бездумно копировать чужой код со всяких форумов самостоятельно собирать строку.

Попробуйте как-то так:
Fingerprint2.get(hash => {
  $.ajax({
    type: 'post',
    url: 'https://api.example.com/log',
    dataType: 'json',
    data: { hash },
    success: res => console.log('OK!', res),
    error: console.error,
  });
});
Но вообще, переходите на поддерживаемую и обновляемую версию пакета @fingerprintjs/fingerprintjs
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы