{"id":104921,"date":"2016-06-24T20:00:24","date_gmt":"2016-06-24T11:00:24","guid":{"rendered":"http:\/\/www.key-p.com\/blog\/staff\/?p=104921"},"modified":"2016-06-24T20:00:24","modified_gmt":"2016-06-24T11:00:24","slug":"javascript%e3%83%a9%e3%82%a4%e3%83%96%e3%83%a9%e3%83%aabluebird%e3%81%a7promise%e3%82%92%e7%b0%a1%e5%8d%98%e3%81%ab%e4%bd%9c%e3%82%8b","status":"publish","type":"post","link":"https:\/\/www.key-p.com\/blog\/staff\/archives\/104921","title":{"rendered":"JavaScript\u30e9\u30a4\u30d6\u30e9\u30eabluebird\u3067Promise\u3092\u7c21\u5358\u306b\u4f5c\u308b"},"content":{"rendered":"<p>\n<a href=\"http:\/\/www.key-p.com\/blog\/staff\/archives\/104836\" title=\"Promise\u3068catch\u306e\u826f\u3044\u66f8\u304d\u65b9\">\u524d\u56de<\/a>\u306b\u5f15\u304d\u7d9a\u304d\u3001\u4eca\u56de\u3082\u3001JavaScript\u306ePromise\u95a2\u9023\u306e\u8a18\u4e8b\u3067\u3059\u3002<br \/>\n<br \/>\n\u4eca\u56de\u306f\u3001JavaScript\u30e9\u30a4\u30d6\u30e9\u30ea\u306e<a href=\"http:\/\/bluebirdjs.com\/docs\/getting-started.html\">bluebird<\/a>\u3092\u4f7f\u3063\u3066\u3001\u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u3067\u975e\u540c\u671f\u51e6\u7406\u3092\u884c\u3046\u95a2\u6570\u3092\u7c21\u5358\u306bPromise\u3092\u8fd4\u3059\u95a2\u6570\u306b\u5909\u63db\u3059\u308b\u65b9\u6cd5\u3092\u7d39\u4ecb\u3057\u307e\u3059\u3002<br \/>\n<h3>bluebird\u3068\u306f<\/h3>\nbluebird\u3068\u306f\u3001Promise\u3092\u5b9f\u88c5\u3057\u305fJavaScript\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u3067\u3059\u3002\u73fe\u5728\u3001\u591a\u304f\u306e\u30d6\u30e9\u30a6\u30b6\u3084Node.js\u306a\u3069\u306eJavaScript\u5b9f\u884c\u74b0\u5883\u3067\u306f\u3001Promise\u304c\u6a19\u6e96\u3067\u5bfe\u5fdc\u3055\u308c\u3066\u3044\u307e\u3059\u304c\u3001IE\u306a\u3069\u306e\u672a\u5bfe\u5fdc\u306e\u74b0\u5883\u3067\u3082\u3001bluebird\u3092\u5229\u7528\u3059\u308b\u3053\u3068\u3067Promise\u3092\u4f7f\u3048\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<br \/>\n\u305d\u308c\u3060\u3051\u3067\u306a\u304f\u3001bluebird\u306b\u306fES2015\u306e\u6a19\u6e96\u306e\u4ed5\u69d8\u306b\u306a\u3044\u4fbf\u5229\u306a\u95a2\u6570\u304c\u3042\u308a\u3001Promise\u306b\u5bfe\u5fdc\u3057\u3066\u3044\u308b\u74b0\u5883\u3067\u3082\u4fbf\u5229\u306a\u30e9\u30a4\u30d6\u30e9\u30ea\u3067\u3059\u3002<br \/>\n<h3>bluebird\u306epromisify\u3001promisifyAll\u3067Promise\u3092\u8fd4\u3059\u95a2\u6570\u3092\u4f5c\u308b<\/h3>\npromisify\u306f\u3072\u3068\u3064\u306e\u95a2\u6570\u3092\u5bfe\u8c61\u3068\u3057\u3066\u3001Promise\u3092\u8fd4\u3059\u95a2\u6570\u3092\u751f\u6210\u3057\u307e\u3059\u3002<br \/>\n\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u3001Node.js\u306e\u6a19\u6e96\u30e9\u30a4\u30d6\u30e9\u30ea\u306b\u3088\u304f\u3042\u308b\u3001\u5f15\u6570\u306e\u672b\u5c3e\u3067\u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u95a2\u6570\u3092\u6e21\u3059\u5f62\u5f0f\u306e\u95a2\u6570\u304c\u5bfe\u8c61\u3068\u306a\u308a\u307e\u3059\u3002<br \/>\n<pre class=\"lang:js decode:true\">fs.readFile( \"myfile.txt\", function ( error, data ) {\n\tif ( error ) throw error;\n\tconsole.log( data );\n} );<\/pre>\n\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u3059\u308b\u3053\u3068\u3067\u3001\u7c21\u5358\u306bPromise\u3092\u8fd4\u3059\u95a2\u6570\u3092\u751f\u6210\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<br \/>\n\u30d9\u30bf\u66f8\u304d\u3067\u3082\u66f8\u3051\u306a\u3044\u3053\u3068\u306f\u306a\u3044\u3067\u3059\u304c\u3001Promise\u5316\u3059\u308b\u5ea6\u306b\u4f3c\u305f\u3053\u3068\u3092\u66f8\u304f\u306e\u3067\u3042\u308c\u3070\u3001\u5197\u9577\u306a\u306e\u3067\u3001\u7528\u610f\u3055\u308c\u305f\u95a2\u6570\u3092\u4f7f\u3044\u307e\u3057\u3087\u3046\u3002<br \/>\n<pre class=\"lang:js decode:true\">const Promise = require( \"bluebird\" );\nconst fs = require( \"fs\" );\n\n\/\/ promisify\u3092\u4f7f\u3048\u3070\u3001Promise\u3092\u8fd4\u3059\u95a2\u6570\u30921\u884c\u3067\u4f5c\u6210\u3067\u304d\u308b\nconst readFile = Promise.promisify( fs.readFile );\n\n\/\/ \u540c\u3058\u95a2\u6570\u3092\u624b\u66f8\u304d\u3067\u4f5c\u6210\u3059\u308b\u3068\u30fb\u30fb\u30fb\nfunction myReadFile( ...args ) {\n    return new Promise( function ( resolve, reject ) {\n        fs.readFile( ...args, function ( error, data ) {\n            if ( error ) reject( error );\n            else resolve( data );\n        } );\n    } );\n}\n\nreadFile( \"myfile.txt\", \"utf8\" ).then( function( data ) {\n\tconsole.log( data );\n} );<\/pre>\n\u307e\u305f\u3001\u3072\u3068\u3064\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b\u542b\u307e\u308c\u308b\u3059\u3079\u3066\u306e\u95a2\u6570\u3092\u4e00\u5ea6\u306bPromise\u3092\u8fd4\u3059\u95a2\u6570\u306b\u3059\u308b\u3001promisifyAll\u3068\u3044\u3046\u95a2\u6570\u3082\u3042\u308a\u307e\u3059\u3002<br \/>\nNode.js\u3067\u306f\u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u95a2\u6570\u3067\u7d50\u679c\u3092\u8fd4\u3059\u95a2\u6570\u304c\u591a\u3044\u305f\u3081\u3001\u4e00\u6c17\u306b\u5909\u63db\u3067\u304d\u308b\u306e\u306f\u4fbf\u5229\u3067\u3059\u3002<br \/>\n<pre class=\"lang:js decode:true\">const Promise = require( \"bluebird\" );\nconst fs = Promise.promisifyAll( require( \"fs\" ) );\n\n\/\/ \u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306fAsync\u3068\u3044\u3046\u30b5\u30d5\u30a3\u30c3\u30af\u30b9\u3067Promise\u3092\u8fd4\u3059\u95a2\u6570\u304c\u8ffd\u52a0\u3055\u308c\u308b\n\/\/ \u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u30b5\u30d5\u30a3\u30c3\u30af\u30b9\u306f\u5909\u66f4\u53ef\u80fd\nfs.readFileAsync( \"myfile.txt\", \"utf8\" ).then( function( data ) {\n\tconsole.log( data );\n} );<\/pre>\n\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u3001\u4e88\u3081promisifyAll\u3057\u305f\u30bd\u30fc\u30b9\u3092\u7528\u610f\u3057\u3066\u304a\u304f\u3068\u3001\u6bce\u56de\u3057\u306a\u304f\u3066\u826f\u3044\u306e\u3067\u697d\u3067\u3059\u3002<br \/>\n<pre class=\"lang:js decode:true\">const Promise = require( \"bluebird\" );\nmodule.exports = Promise.promisifyAll( require( \"fs\" ) );<\/pre>\npromisify\u3001promisifyAll\u306e\u8a73\u3057\u3044\u8aac\u660e\u306f\u3001\u4ee5\u4e0b\u304b\u3089\u3054\u89a7\u306b\u306a\u308c\u307e\u3059\u3002<br \/>\n<ul>\n\t<li><a href=\"http:\/\/bluebirdjs.com\/docs\/api\/promise.promisify.html\">Promise.promisify | bluebird<\/a><\/li>\n\t<li><a href=\"http:\/\/bluebirdjs.com\/docs\/api\/promise.promisifyall.html\">Promise.promisifyAll | bluebird<\/a><\/li>\n<\/ul>\n<br \/>\n<br \/>\n<br \/>\n<br \/>\n<a href=\"http:\/\/www.key-p.com\/recruit\/\" target=\"new\">\u30ad\u30fc\u30fb\u30dd\u30a4\u30f3\u30c8\u3067\u306f\u3001\u3069\u3093\u3069\u3093\u4fbf\u5229\u306a\u66f8\u304d\u65b9\u3092\u53d6\u308a\u5165\u308c\u308b\u30a8\u30f3\u30b8\u30cb\u30a2\u3092\u52df\u96c6\u3057\u3066\u3044\u307e\u3059\u3002<\/a><br \/>\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u524d\u56de\u306b\u5f15\u304d\u7d9a\u304d\u3001\u4eca\u56de\u3082\u3001JavaScript\u306ePromise\u95a2\u9023\u306e\u8a18\u4e8b\u3067\u3059\u3002 \u4eca &hellip; <a href=\"https:\/\/www.key-p.com\/blog\/staff\/archives\/104921\">\u7d9a\u304d\u3092\u8aad\u3080 <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":40,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[16],"tags":[],"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/www.key-p.com\/blog\/staff\/wp-json\/wp\/v2\/posts\/104921"}],"collection":[{"href":"https:\/\/www.key-p.com\/blog\/staff\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.key-p.com\/blog\/staff\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.key-p.com\/blog\/staff\/wp-json\/wp\/v2\/users\/40"}],"replies":[{"embeddable":true,"href":"https:\/\/www.key-p.com\/blog\/staff\/wp-json\/wp\/v2\/comments?post=104921"}],"version-history":[{"count":19,"href":"https:\/\/www.key-p.com\/blog\/staff\/wp-json\/wp\/v2\/posts\/104921\/revisions"}],"predecessor-version":[{"id":104980,"href":"https:\/\/www.key-p.com\/blog\/staff\/wp-json\/wp\/v2\/posts\/104921\/revisions\/104980"}],"wp:attachment":[{"href":"https:\/\/www.key-p.com\/blog\/staff\/wp-json\/wp\/v2\/media?parent=104921"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.key-p.com\/blog\/staff\/wp-json\/wp\/v2\/categories?post=104921"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.key-p.com\/blog\/staff\/wp-json\/wp\/v2\/tags?post=104921"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}