小编老杂种*_*老杂种的帖子

如何修复“FileSystemException:异步操作当前挂起”?

我写了一个 torrent 下载演示,如下所示:

var peers....

for(var i =0;i < length;i++){
   var peer = peers[i];
   peer.start((List<int> data){
      _downloadFile.write(begin,end,data);
   });
}

Run Code Online (Sandbox Code Playgroud)

我的意思是有多次peer尝试访问_file.

`_downloadFile` code looks like this:
   ....
   var _access = _file.open(mode:FileMode.writeOnlyAppend);
   ...
   Future write(int begin,int end, List<int> block) async{
       ....
       await _access.setPosition(begin);
       await _access.writeFrom(block);
       ....
   }
Run Code Online (Sandbox Code Playgroud)

它会抛出异常:FileSystemException: An async operation is currently pending 我认为原因是不同的分叉调用setPosition,所以我尝试让每个分叉等待写入操作结束:

`_downloadFile` code look like this:
   ....
   var _access = _file.open(mode:FileMode.writeOnlyAppend);
   var _lock;
   ...
   Future write(int begin,int end, List<int> block) async{ …
Run Code Online (Sandbox Code Playgroud)

asynchronous dart

6
推荐指数
1
解决办法
3689
查看次数

为什么我用相同的代码得到不同的结果?

我按照js代码写了一些dart代码,有问题,希望有人能帮助我/

js代码:

var max = 0x80000000;
var data = -2000;
var mod = data % max;
Run Code Online (Sandbox Code Playgroud)

mod 值为 -2000

飞镖代码:

var max = 0x80000000;
var data = -2000;
var mod = data % max;
Run Code Online (Sandbox Code Playgroud)

mod 值为 2147481648

为什么?

javascript dart

2
推荐指数
1
解决办法
52
查看次数

标签 统计

dart ×2

asynchronous ×1

javascript ×1