【发布时间】:2018-03-17 09:40:15
【问题描述】:
如何将R.cond 与承诺一起使用?
类似这样的..
const fetchBin = (url) => fetch(`https://httpbin.org${url}`).then((response) => {
var contentType = response.headers.get("content-type");
if(contentType && contentType.includes("application/json")) {
return response.json();
}
throw new TypeError("Oops, we haven't got JSON!");
})
const testStatus = (status) => fetchBin(`/status/${status}`);
const isOk = R.propEq('statusCode', 200);
const testCond = R.cond([
[ R.pipeP(testStatus, isOk), (resp) => console.log('The resp is ', resp) ],
[ R.T, (code) => console.log('The resp is NOT ok', code) ]
])
testCond(404)
// R.pipeP(testStatus, isOk)(404)
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.24.1/ramda.min.js"></script>
【问题讨论】:
-
我认为你应该在
then的testStatus中包含testCond部分,因为根据 Ramda 文档,谓词应该是cond中的纯函数。
标签: javascript functional-programming promise ramda.js