Asynchronous 如何在React Native中使用承诺异步完成工作?

Asynchronous 如何在React Native中使用承诺异步完成工作?,asynchronous,react-native,promise,Asynchronous,React Native,Promise,在React原生项目中,我使用Promise编写了此函数,以异步方式完成工作 function doEncryptionAsync(params) { return new Promise( function (resolve, reject) { // Async code started console.log('Promise started (Async code started)'); // The job that takes som

在React原生项目中,我使用
Promise
编写了此函数,以异步方式完成工作

function doEncryptionAsync(params) {
  return new Promise(
    function (resolve, reject) {
      // Async code started
      console.log('Promise started (Async code started)');

      // The job that takes some times to process 
      var encrypted_value = new EncryptedValue(params); 

      if (true) {
        resolveencrypted_value 
      }
      else {
        reject("Error while encrypting!");
      }
    }
  )
}
我称之为我的Redux行动

export const encrypt = ( params ) => {
  return (dispatch) => {
    dispatch({
      type: type.ENCRYPT
    });

    // Sync code started
    console.log('Started (Sync code started)');

    doEncryptionAsync(params)
        .then((response) => {
          // Async code terminated
          console.log('Promise fulfilled (Async code terminated)');

          encryptSuccess(dispatch, response);
        })
        .catch((error) => {
          console.log(error);

          encryptFail(dispatch);
        });

    // Sync code terminated
    console.log('Promise made (Sync code terminated)');
  }
}
它可以工作,但不是异步的!我的主线程似乎被阻塞,直到
doEncryptionSync()
返回。行
console.log('Promise made(Sync code terminated)
会运行,但不会立即运行

我的日志输出是这样的

// OUTPUT Simulation
Started (Sync code started)                 at time x
Promise started (Async code started)        at time x
Promise made (Sync code terminated)         at time (x + 2sec)
Promise fulfilled (Async code terminated)   at time (x + 2sec)

我的问题是,我实现
异步任务的方法有什么问题

JavaScript的异步行为仅与IO阻塞函数相关。这意味着,事件循环将继续运行,而不是等待IO函数

由于JS是单线程的,CPU限制的计算占用了线程,不能异步完成


那么,您唯一的办法就是创建一个可以在不同线程中为您执行计算的函数,然后在完成后调用JS回调。

Oops!不幸的是,我不知道!为您创建一个
本机模块
解决方案;我们的加密工作基于JavaScript库。这就是我们使用React Native的原因!虽然我完全明白你的意思,但有些事情与平台的工作方式有关。这不是一颗银弹。