0

nodegit を使用して、長時間実行されているクローン操作をキャンセルするにはどうすればよいですか? 私たちのレポは 3GB のようです。時間がかかりすぎるため、ユーザーはレポを中止したいと思うかもしれません。

約束を断ることはできますか?そのようです?

var cloneRepository = NodeGit.Clone(cloneURL, localPath, cloneOptions);
...
if (abortCondition)
   cloneRepository.reject();
4

2 に答える 2

0

gitter.im への投稿で回答を得ました。

基本的に、約束を拒否することはできません。を使用して子プロセスを生成し、child_process.fork()それを強制終了してクローンを中止する必要があります。

const fork = require('child_process').fork;
var childProcess = fork("clone.js", null, { silent: true});

...
childProcess.kill();
于 2016-10-12T16:19:02.567 に答える
0

(dstj に追加)

完全な新しいモジュール ファイルを作成したくない場合は、npm forkme を使用できます。

 // Import for this process
 var path = require("path");
 
 var child = forkme([{
            param1,
            param2,
            param3,
            param4,//\
            param5 // \
        }],        //  -> These can't be functions. Only static variables are allowed.
            function (outer) {
                // This is running in a separate process, so modules have to be included again
                
                // Note that I couldn't get electron-settings to import here, not sure if that can be replicated on a fresh project.
                var path = require("path");
                
                // Variables can be accessed via
                console.log(outer.param1)
                
                process.send({ foo: "bar" });
                
                process.exit(-1); // Returns -1
                    });

        child.on('message', (data) => {
            console.log(data.foo);
        });

        child.on('exit', (code) => {
            if (code !== null) {  // Process wasnt killed
                if (code == 0) {  // Process worked fine
                  // do something
                } else {  // Some error happened
                  var err = new Error("crap.");
                  // do something
                }
            }
        });

于 2017-07-26T15:46:06.470 に答える