React Nativeプロジェクトでは、Promise
を使用してこの機能を書いて、非同期でジョブを実行しました。React NativeでPromisesを使用して非同期でジョブを実行する方法はありますか?
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)');
}
}
動作はしますが、非同期ではありません。私のメインスレッドは、doEncryptionAsync()
が返されるまでブロックされているようです。行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)
AsyncTask
を実装する私のアプローチは何ですか?
私は残念ながらそれを知らなかった! – YUSMLE
あなたは 'ネイティブモジュール'ソリューションを作成します。私たちの暗号化ジョブは、JavaScriptライブラリをベースにしています。結局のところ、それがReact Nativeを使用している理由です! – YUSMLE
私はあなたがどこから来ているのかを完全に把握していますが、プラットフォームの仕組みとちょうど関係があります。それは銀色の弾丸ではない。 – Kraylog