工場は何も返さず、単にjsonファイルに書き込みます。この場合、$ qを使って書き込みが完了したことを確認する方法はわかりません。
Iは、コールバックを使用する場合でも、コードが正しい順序で実行されないので、これは、これがあっても、コントローラの機能の一例である
angular.module('jsonWrite', [])
.factory('JsonWrite', function($q) {
var nw = require('nw.gui');
var fs = require('fs');
var path = require('path');
var file = "myjsonfile.json";
var filePath = path.join(nw.App.dataPath, file);
var write = {};
write.writeJson = function(x){
var deferred = $q.defer();
fs.access(filePath, fs.F_OK, function(err) {
if (!err) {
fs.readFile(filePath, 'utf8', function(err, data) {
var myObj = JSON.parse(data);
myObj = x;
fs.writeFileSync(filePath, JSON.stringify(myObj));
});
}
else {
fs.open(filePath, "w", function(err, data) {
var myObj = {};
myObj = x;
fs.writeFileSync(filePath, JSON.stringify(myObj));
});
};
$q.resolve();
});
return deferred.promise;
};
return(write);
});
..、コントローラに私の問題を引き起こしていますコールバックがあり、JsonWriteはStateChanger.changeStateが実行される前に書き込まれません。これはトラブルのヒープを引き起こします。 StateChangerに$タイムアウトを設定すると、すべて正常に動作します.JsonWriteの書き込みが完了した後で実行されます。
$scope.change = function(x){
function write(callback){
JsonWrite.writeJson(x);
callback();
};
function change(){
writemystuff(function(){
StateChanger.changeState(); // <- $timeout here and it works
})
};
change();
};
誰かが私に何ができるかのアイデアを与えることができれば、私はあなたの工場が正常に見える
ありがとうございました、私は何時間も約束を読んだが、それはまだ非常に混乱している。 – joropicha