'a'
mh-two-thousand-and-two
2024-04-12 44d2c92345cd156a59fc327b3060292a282d2893
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
var loadJs = require('./loadJs');
var defaults = require('./defaults');
var noop = require('./noop');
var uniqId = require('./uniqId');
var query = require('./query');
exports = function(options) {
    defaults(options, exports.settings);
    var name = options.name || uniqId('jsonp');
    var param = options.param;
    var timeout = options.timeout;
    var error = options.error;
    var success = options.success;
    var complete = options.complete;
    var data = options.data;
    var url = options.url;
    var timer;
    var isTimeout = false;
    if (timeout > 0) {
        timer = setTimeout(function() {
            isTimeout = true;
            error(new Error('Timeout'));
            complete();
        }, timeout);
    }
    window[name] = function(data) {
        success(data);
        complete();
        window[name] = noop;
    };
 
    if (!false) {
        data[param] = name;
        data = query.stringify(data);
        url += url.indexOf('?') > -1 ? '&' + data : '?' + data;
    }
    loadJs(url, function(isLoaded) {
        if (isTimeout) return;
        if (timer) clearTimeout(timer);
        if (!isLoaded) {
            error(new Error());
            complete();
        }
    });
};
exports.settings = {
    data: {},
    param: 'callback',
    success: noop,
    error: noop,
    complete: noop,
    timeout: 0
};
 
module.exports = exports;