2013-04-05 66 views
16

節點框架通常通過(err, result)回調工作。基於Promise的節點的http框架?

Node是否有一個基於承諾的http框架,擁有健康的社區和積極的開發(例如express)?

+1

無論我使用nodejs函數的異步工作流,我都使用Q的'denodeify'。我也嘗試了一些外部庫函數,它對我來說工作得很好。請嘗試'Q.denodeify '。 – 2013-05-31 05:48:53

+0

也許你應該澄清。我相信這個問題需要一個使用promise的http服務器的nod​​e.js框架,而不是一個基於promise的http請求庫,其中一些答案似乎正在解決。 – Chris 2016-06-20 21:20:33

回答

3

您可能感興趣的Q promise library的作者Kris Kowal寫的Joey。沒有一個大的社區,但是Kris經常在freenode的#montage irc頻道上提供幫助。

4

我今天有同樣的問題,我發現q-io,也是由kriskowal。它使用Q.js來承諾包裝文件系統io以及服務器和http客戶端。

我還沒有嘗試過,但在這一點上它似乎沒有圍繞它建立的活躍社區。在這個充滿回望金字塔末日的世界裏,讓人難過的是,

+1

哈哈「末日回撥金字塔」 – slezica 2013-05-28 23:58:08

1

對於HTTP客戶端,我喜歡http://www.npmjs.org/package/httpinvoke

對於HTTP服務器,我喜歡https://github.com/mjackson/mach;這很棒!

再次,我也不是一個如此巨大的粉絲httpinvoke,我的工作,沒關係。但我認爲API比它需要更復雜,我覺得很難調試。我可能會錯過一些東西。

或者,我使用推薦kew(快速承諾實現)來包裝回調樣式方法。

6

有基於https://github.com/mzabriskie/axios

無極HTTP客戶端在瀏覽器和Node.js的

示例代碼:

// Make a request for a user with a given ID 
axios.get('/user?ID=12345') 
    .then(function (response) { 
    console.log(response); 
    }) 
    .catch(function (response) { 
    console.log(response); 
    }); 
12

在HTTP客戶端,有新的fetch APIhttps://fetch.spec.whatwg.org/

fetch()允許你做類似的XMLHttpRequest(XHR)的網絡請求,主要區別是[它]使用的承諾,這使得一個簡單和清晰的API,避免回調地獄,不必記住的XMLHttpRequest的複雜的API

https://developers.google.com/web/updates/2015/03/introduction-to-fetch

一些實現:

這裏是一些示例代碼:

fetch('/some/url', {method: 'get'}) 
    .then(function(response) { 
    // rejoice \o/ 
    }) 
    .catch(function(err) { 
    // error :-(
    }); 
+2

爲什麼這會被投票?這不能回答這個問題嗎?這是一個Node並承諾基於HTTP客戶端,但也許我錯過了一些... – wires 2016-02-05 20:26:09

+1

同意。從我投票! – 2016-02-27 00:40:29

+1

問題是關於服務器端 – Ebuall 2017-06-27 11:01:58

2

還不大,即使在2016年後期

其他人跳過Koa.js它不支持的承諾基於「異步/等待其發電機」。

然而,我認爲你的問題的目標是更深層次的整合,這可能是我所做的:一個HTTP服務器將請求作爲承諾返回,然後可以鏈接在一起。

它基於承諾表示可以一次完成的異步任務的想法,因此服務器就像一個承諾流,我將其封裝在一個帶有承諾的回調中。

它仍然是更冷靜的潛在的(即較小的,專業化的項目)作爲有很少的代碼給它(和目前的概念坐鎮0依賴)

有在倉庫中更多這方面的細節:https://github.com/rsxdalv/unframed 其中包括建築過程的演練。使用實際可以運行的代碼Node.js v6.6