我在项目中使用Coroutine
,并定义了一个CoroutineScope
类来处理差异Coroutines
上的Dispatchers
,例如IO
,MAIN
...
但是我不明白这段代码是如何工作的,它是什么机制?
val job = Job()
override val coroutineContext: CoroutineContext
get() = Dispatchers.IO + job
Dispatchers.IO + job
是什么意思?
答案 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中),则可以取消该网络作业。 但是请记住,如果作业被取消或完成,您总是必须创建一个新的作业