Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Q.js-使用延迟_Node.js_Deferred - Fatal编程技术网

Node.js Q.js-使用延迟

Node.js Q.js-使用延迟,node.js,deferred,Node.js,Deferred,如何从下面的示例中获取文本的值 Q.js有一个使用延迟的示例: var deferred = Q.defer(); FS.readFile("foo.txt", "utf-8", function (error, text) { if (error) { deferred.reject(new Error(error)); } else { deferred.resolve(text); } }); return deferred.prom

如何从下面的示例中获取文本的值

Q.js有一个使用延迟的示例:

var deferred = Q.defer();
FS.readFile("foo.txt", "utf-8", function (error, text) {
    if (error) {
        deferred.reject(new Error(error));
    } else {
        deferred.resolve(text);
    }
});
return deferred.promise;
在本例中,使用了一个节点异步函数。我要做的是从返回的deferred.promise中获取文本的值。当我使用console.log(deferred.promise)时,我得到以下信息:

{ promiseSend: [Function], valueOf: [Function] }
我做错了什么(因为我只是从这里复制/粘贴了示例:),或者我还需要做什么才能从文件中实际获取该文本

我知道node.js有上述调用的同步版本——我的目标是了解deferred如何与这个库一起工作

Q = require('q');
FS = require('fs');

function qread() {
  var deferred = Q.defer();
  FS.readFile("foo.txt", "utf-8", function (error, text) {
    if (error) {
  deferred.reject(new Error(error));
    } else {
  deferred.resolve(text);
    }
  });
  return deferred.promise;
};   

var foo = qread();

setTimeout(function() {
  console.log(""+foo);
},1000);
奇怪的是,您无法看到
console.log(foo)
的输出。不知道为什么


检查此处的更多示例

您可以通过以下承诺获得价值:

function read() {
    // your snippet here...
}

read().then(function (text) {
    console.log(text);
});
此外,可以将错误处理程序作为第二个参数传递给
.then()
,也可以使用
.fail()
方法:

read().fail(function (err) {
    console.log(err);
});

可以在节点中重写,如:

var read = Q.nfcall(FS.readFile, FS, "foo.txt", "utf-8");
read().then( function (text) { console.log(text) } );
var read = Q.nfcall(FS.readFile, FS, "foo.txt", "utf-8");
read().then( function (text) { console.log(text) } );
Q = require('q');
FS = require('fs');

var deferred = Q.defer();
FS.readFile("client-02.html", "utf-8", function (error, text) {
  if (error) {
    deferred.reject(new Error(error));
    } else {
    deferred.resolve(text);
    }
return deferred.promise.done( setTimeout(console.log(text),1000 ));
});