Asynchronous 如何在React Native中使用承诺异步完成工作?
在React原生项目中,我使用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
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的原因!虽然我完全明白你的意思,但有些事情与平台的工作方式有关。这不是一颗银弹。