• 【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));
  • 相关阅读:
    javaScript中eval()方法转换json对象
    JS 根据参数是否为空进行true|false判断呢
    mybatis返回map类型数据空值字段不显示(三种解决方法)
    值类型与引用类型的区别
    随机生成四位数字和字母
    彩票
    冒泡排序
    查询资料:二分查找法
    随机数生成机制
    运算符
  • 原文地址:https://www.cnblogs.com/shytong/p/5694059.html
Copyright © 2020-2023  润新知