帖子
帖子
用户
博客
课程
显示全部楼层
131
帖子
2
勋章
3447
Y币

[云开发] fs

[复制链接]
发表于 2022-6-10 16:30:55

function readys() {
            var fs = api.require('fs');
            fs.readDir({
                path: 'fs://userinfo/pull/record'
            }, function (ret, err) {
                if (ret.status) {
                    var record = ret.data;
                    console.log(record);
                    var newr
                    for (var i = 1; i < record.length; i++) {
                        var r = record.substring(6, 8)
                        console.log(r);
//这里执行两次第一次是01第二次是02
                        fs.readByLength({
                            path: 'fs://userinfo/pull/record/record' + r + '.txt',
                            substring: {
                                start: 0
                            }
                        }, function (ret, err) {
                            if (ret.status) {
                                var lens = ret.content.length;
                                var newid = r + ret.content.substring(2, lens)
                                console.log(r);
//然后到修改文件内容的时候执行的两次都是02
                                fs.writeByLength({
                                    path: 'fs://userinfo/pull/record/record' + r + '.txt',
                                    content: newid,
                                    place: {
                                        start: 0
                                    }
                                }, function (ret, err) {
                                    if (ret.status) {
                                        console.log(JSON.stringify(ret));
                                    } else {
                                        console.log(JSON.stringify(err));
                                    }
                                });
                            } else {
                                console.log(JSON.stringify(err));
                            }
                        });
                    }
                } else {
                    console.log(JSON.stringify(err));
                }
            });
        }
[2022-6-10 16:27:41][INFO] 01 at pullGrades.html:51
[2022-6-10 16:27:41][INFO] 02 at pullGrades.html:51
[2022-6-10 16:27:41][INFO] 02 at pullGrades.html:61
[2022-6-10 16:27:41][INFO] 02 at pullGrades.html:61
这是控制台输出记录
为什么后面两次都是02呢


我怀疑是你的代码执行顺序有问题,我看下
131
帖子
2
勋章
3447
Y币
应该是,但我不知道怎么解决,for循环不是全部执行然后再执行下一次的吗,不知道什么情况
技术咨询-特特 · 2022-6-10 17:17我怀疑是你的代码执行顺序有问题,我看下
380
帖子
4
勋章
6
Y币
for 循环里不能放异步函数,否则执行顺序不可控
湫湫TuT · 2022-6-10 17:23应该是,但我不知道怎么解决,for循环不是全部执行然后再执行下一次的吗,不知道什么情况
131
帖子
2
勋章
3447
Y币
那要怎么解决呢?还有别的方法嘛?
技术咨询-F · 2022-6-10 17:31for 循环里不能放异步函数,否则执行顺序不可控
380
帖子
4
勋章
6
Y币
可以用尾递归或闭包
湫湫TuT · 2022-6-10 17:33那要怎么解决呢?还有别的方法嘛?
131
帖子
2
勋章
3447
Y币
没用过这两个,有方法解释的吗
技术咨询-F · 2022-6-10 17:38可以用尾递归或闭包
380
帖子
4
勋章
6
Y币
您需要登录后才可以回帖 登录

本版积分规则