zoukankan      html  css  js  c++  java
  • 【Promise】Promise实现请求超时处理(加强版)

      昨天闲来无事,于是把之前写过的promise优化了一下,代码如下:

    /*写文件、追加写、读文件*/
    var fs = require('fs');
    
    function wrapper(fn,context) {
        var args = Array.prototype.slice.call(arguments,2);
        return new Promise((resolve,reject) => {
            args.push((err,data) => {
                err ? reject(err) : resolve(data);
            });
            fn.apply(context,args);
        });
    }
    
    wrapper(fs.writeFile,fs,'message.txt','word')
        .then(() => wrapper(fs.appendFile,fs,'message.txt','word'))
        .then(() => wrapper(fs.readFile,fs,'message.txt','word'))
        .then(data => console.log(data))
        .catch(err => console.log(err));
    
    
    /*获取员工id、并发获取两个接口信息、读信息*/
    var http = require('http');
    var url = require('url');
    
    function delayPromise(ms) {
        return new Promise((resolve,reject) => {
            setTimeout(reject, ms);
        });
    }
    
    function get(url,ms) {  
        return new Promise.race([
            delayPromise(ms),
            wrapper(request,null,url).then(data => {
                return JSON.parse(data);
            })
        ]);
        
    }
    
    get('http://demos.so/result/homework.promise.userInfo')
        .then( data => {
            return Promise.all([get('http://demos.so/result/userid=' + args['_id']), get('http://demos.so/result/student=' + args['_id'])])
        }
        .then( data => console.log(data))
        .catch( err => console.log(args));
  • 相关阅读:
    hnust Snowman
    hnust 可口可乐大促销
    hnust 聚宝盆
    hnust 搬书
    hnust 神奇的序列
    hnust 懒人多动脑
    hnust CZJ-Superman
    集合Set--BST实现
    快速排序
    位运算符
  • 原文地址:https://www.cnblogs.com/shytong/p/5694059.html
Copyright © 2011-2022 走看看