Asyncronus React-Native

时间:2018-08-05 06:30:04

标签: javascript react-native asynchronous async-await

问题:异步代码导致整个源代码都遵循异步

示例:

    // global scope
    let _variableDefinedInParentScope

    WriteConfiguration(__params) {
    // overSpreading.
    let { data, config } = __params

    // local variable.
    let _fileName, _configuration, _write, _read

    // variable assignment.
    _fileName = config
    _configuration = data

    // if dataset and fileName is not empty.
    if(!_.isEmpty(_configuration) && !_.isEmpty(_fileName)) {

        // create a path you want to write to
        // :warning: on iOS, you cannot write into `RNFS.MainBundlePath`,
        // but `RNFS.DocumentDirectoryPath` exists on both platforms and is writable
        _fileName = Fs.DocumentDirectoryPath + ' /' + _fileName;

        // get file data and return.
        return Fs.readDir(_fileName).then((__data) => {
    console.error(__data)
            // if data is not empty.
            if(!_.isEmpty(__data)) {
                    // return data if found.
                    return __data
            } else {
                // write the file
                return Fs.writeFile(_fileName, data, 'utf8')
                .then((success) => {

                    // on successful file write.
                            return success
                    })
                    .catch((err) => {
                        // report failure.
                        console.error(err.message);
                    })
            }
        })
        .catch((err) => {
                // report failure.
                console.error(err.message)
        })
}
} // write configuration to json file.

以下是承诺处理的方法

  • .then(((__ onAccept)=> {},(__onReject)=> {})
  • aync函数(__promise){等待WriteConfiguration()}
  • .then((__ onAccept)=> {_variableDefinedInParentScope = __onAccept}

据我所知,第三个是无用的点,因为我从未遇到过任何回报,因为promise解析需要时间,并且在任何解析返回未定义之前调用该变量

本机 在本机语言中,几乎每个代码部分都是同步的,其中文件写入模块是异步的,这给我带来了麻烦。

我想要的东西 我想将值从异步代码返回到同步代码。没有任何异步链。

1 个答案:

答案 0 :(得分:-1)

使用

即可轻松退出您的答案
 await

 async

示例:

mainFunction(){
  //will wait for asyncroFunction to finish!!
  await asyncroFunction()
}

async asyncroFunction(){
}