下面是一段時間以來一直讓我瘋狂的事情。我正在開發一個涉及使用Javascript訪問ElasticSearch的項目。作爲測試的一部分,我想創建一個索引。這裏是一個非常簡單的片斷,在我腦海裏,應該這樣做,並打印從ElasticSearch服務器返回的消息:使用ElasticSearch javascript客戶端創建索引,承諾不會返回
var es = require('elasticsearch');
var es_client = new es.Client({host: "localhost:9200"});
var breaker = Math.floor((Math.random() * 100) + 1);
var create_promise = es_client.indices.create({index: "test-index-" + breaker});
create_promise.then(function(x) {
console.log(x);
}, function(err) { console.log(err);});
當我去到一個目錄下會出現什麼情況,運行npm install elasticsearch
,然後運行該代碼與NodeJS一樣,是請求已經完成,但由於某種原因,承諾不會返回。我希望這段代碼能夠運行到最後,並在ES服務器的響應回來後完成。相反,這個過程只是掛起。任何想法爲什麼?
我知道索引可以通過添加一個文檔來創建,但是這個奇怪的行爲只是給我造成了困擾,而我無法弄清楚它背後的原因或意義。
可能的重複[如何將現有的回調API轉換爲承諾](http://stackoverflow.com/questions/22519784/how-do-i-convert-an-existing-callback-api-to-promises ) –
看完源代碼後,我幾乎可以肯定這是一個錯誤 - 請在github上的跟蹤器中打開一個問題 –