定义CoroutineScope时,Dispatcher.IO +工作到底会发生什么?

时间:2019-12-11 13:12:52

标签: kotlin coroutine kotlin-coroutines

我在项目中使用Coroutine,并定义了一个CoroutineScope类来处理差异Coroutines上的Dispatchers,例如IOMAIN ... 但是我不明白这段代码是如何工作的,它是什么机制?

val job = Job()

override val coroutineContext: CoroutineContext
     get() = Dispatchers.IO + job

Dispatchers.IO + job是什么意思?

1 个答案:

答案 0 :(得分:1)

与Dispatchers.IO一起使用指定作业的优点是,您可以随时取消该作业而不会影响IO Dispatcher中启动的其他作业。 您只需拨打const HtmlWebPackPlugin = require('html-webpack-plugin'); const path = require('path'); const CompressionPlugin = require('compression-webpack-plugin'); module.exports = { entry: "./client", output: { publicPath: '/', path: path.join(__dirname, './build'), filename: 'bundle.js', }, module: { rules: [ { test: /\.(js|jsx)$/, exclude: /node_modules/, use: { loader: 'babel-loader', }, }, { test: /\.html$/, use: [ { loader: 'html-loader', }, ], }, { test: /\.css$/, use: ['style-loader', 'css-loader'], }, { test: /\.(woff(2)?|ttf|eot|svg)(\?v=\d+\.\d+\.\d+)?$/, use: [ { loader: 'file-loader', options: { name: '[name].[ext]', outputPath: 'fonts/', }, }, ], }, ], }, resolve: { extensions: ['.js', '.jsx'], }, devServer: { historyApiFallback: true, contentBase: './', overlay: true, port: 9000, compress: true, proxy: { '/api/**': { target: 'http://localhost:3100', secure: false, changeOrigin: true, }, }, }, devtool: 'inline-source-map', plugins: [ new HtmlWebPackPlugin({ template: './client/index.html', filename: './index.html', }), new CompressionPlugin(), ], };

例如,您发出网络请求,并且在它以某种方式运行时,您发现网络已关闭(例如,从BroadCastReciever中(如果在android中),则可以取消该网络作业。 但是请记住,如果作业被取消或完成,您总是必须创建一个新的作业