舉個例子: if(foo) {
async_call(); // returns a Q promise object
}
// do this immediately if foo was false
// or after the promise is resolved if foo was true
這甚至可能嗎? 我可以看到的替代方法是總是調用異步函數,拋出'foo'檢
所以我在Node.js中創建了這個簡單的測試服務器 每當我做一個直接的響應,我得到請求/秒(快!)。 當我只包裝簡單的Q時,它會降低到請求/秒(慢4倍!)。有人可以解釋這種巨大的差異嗎? // Requires
var server = require('http');
var q = require('q');
// Start server
var http = require('h
流行的JavaScript模塊Q實現了延期/承諾/期貨概念。我認爲它主要與node.js一起使用,但它也支持瀏覽器。我在node.js中使用它。 要做到連續通話要鏈接使用then()一個承諾,在未來,但在一個循環中它可以如此有悖常理比我發現很難做到與此相同的僞代碼: forever {
l = getline();
if (l === undefined) {
b
我一直在使用節點幾個月。對於異步代碼中的錯誤處理,我一直在關注我知道的best practice,它是通過回調錯誤參數來處理錯誤,並讓大多數異常冒出來並使應用程序崩潰,因爲沒有真正的乾淨地恢復的方式。 我正在與一個開發人員合作使用Q,他正在使用Q.nfbind調用一些基於回調的函數。但是,這給我頭痛的錯誤處理。例如,假設我有一個可以用一個錯誤回調函數: function doSomething(x
我試圖縮小與我的node.js服務器有關的內存問題的潛在原因。我一直感到有點不舒服的一部分代碼是我使用Q的承諾。 這裏是我的基本結構是什麼樣子: var Q = require('q');
MyClass.prototype.doSomething = function(somedata, callback) {
var res = [];// will contain the res
我想我誤解Q承諾是如何工作的。我希望我的第一個承諾能夠在下一個開始之前得到解決,但那不會發生。這裏是我的代碼: var Q = require('q');
function doWork(taskName) {
var deferred = Q.defer();
console.log('starting', taskName);
setTimeout(funct