Как найти необработанные обещания, которые случаются только на Android? - PullRequest
0 голосов
/ 31 августа 2018

Я разрабатываю приложение, которое прекрасно работает в iOS, но когда мы запускаем его на Android, мы получаем предупреждения, подобные тому, которое я вставил сюда, и выполнение останавливается:

Possible Unhandled Promise Rejection (id: 0):
Error: Callback was already called.
Error: Callback was already called.
    at blob:http://localhost:8081/3d1448ea-4625-468e-8c56-527626fd00b2:86472:36
    at tryCallOne (blob:http://localhost:8081/3d1448ea-4625-468e-8c56-527626fd00b2:16064:14)
    at blob:http://localhost:8081/3d1448ea-4625-468e-8c56-527626fd00b2:16165:17
    at blob:http://localhost:8081/3d1448ea-4625-468e-8c56-527626fd00b2:2892:21
    at _callTimer (blob:http://localhost:8081/3d1448ea-4625-468e-8c56-527626fd00b2:2781:9)
    at _callImmediatesPass (blob:http://localhost:8081/3d1448ea-4625-468e-8c56-527626fd00b2:2817:9)
    at Object.callImmediates (blob:http://localhost:8081/3d1448ea-4625-468e-8c56-527626fd00b2:3036:14)
    at MessageQueue.__callImmediates (blob:http://localhost:8081/3d1448ea-4625-468e-8c56-527626fd00b2:2370:18)
    at blob:http://localhost:8081/3d1448ea-4625-468e-8c56-527626fd00b2:2197:18
    at MessageQueue.__guardSafe (blob:http://localhost:8081/3d1448ea-4625-468e-8c56-527626fd00b2:2354:11)
    at MessageQueue.flushedQueue (blob:http://localhost:8081/3d1448ea-4625-468e-8c56-527626fd00b2:2196:14)
    at MessageQueue.callFunctionReturnFlushedQueue (blob:http://localhost:8081/3d1448ea-4625-468e-8c56-527626fd00b2:2165:21)
    at http://localhost:8081/debugger-ui/debuggerWorker.js:70:58
console.warn    @   blob:http://localhos…-527626fd00b2:54586
onUnhandled @   blob:http://localhos…-527626fd00b2:15912
onUnhandled @   blob:http://localhos…-527626fd00b2:16324
(anonymous) @   blob:http://localhos…6-527626fd00b2:2864
_callTimer  @   blob:http://localhos…6-527626fd00b2:2781
callTimers  @   blob:http://localhos…6-527626fd00b2:2988
__callFunction  @   blob:http://localhos…6-527626fd00b2:2392
(anonymous) @   blob:http://localhos…6-527626fd00b2:2162
__guardSafe @   blob:http://localhos…6-527626fd00b2:2354
callFunctionReturnFlushedQueue  @   blob:http://localhos…6-527626fd00b2:2161
(anonymous) @   debuggerWorker.js:70

Основная проблема заключается в том, что, поскольку я не получаю строку, где вызвана ошибка, я не могу найти, где ошибка. Кроме того, я не совсем уверен, что я должен исправить, так как приложение работает без этого предупреждения в iOS.

Мне удалось изолировать линию, вызывающую проблемы, но я не уверен, что я должен исправить:

async connectChatEngine(chatEngine) {
      const response = await new Promise(resolve => chatEngine.on('$.ready', (data) => {
        resolve(data);
      }));
      console.log('ChatEngine ready to go!');
      return response;
    },

1 Ответ

0 голосов
/ 31 августа 2018

упаковка await new Promise() в try{} catch(e){}:

async connectChatEngine(chatEngine) {
  try{
    const response = await new Promise(resolve => chatEngine.on('$.ready', (data) => {
      resolve(data);
    }));
    console.log('ChatEngine ready to go!');
    return response;
  } catch(e){
    //handle failure here

    return false;
  }

},
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...