Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 一旦达到404,如何中止发出AJAX请求的Bacon.js属性?_Javascript_Bacon.js - Fatal编程技术网

Javascript 一旦达到404,如何中止发出AJAX请求的Bacon.js属性?

Javascript 一旦达到404,如何中止发出AJAX请求的Bacon.js属性?,javascript,bacon.js,Javascript,Bacon.js,我有一些属性,它使AJAX请求着火。但是,一旦到达case404,我就想终止这个流,但我不知道怎么做。代码如下: // load :: EventStream (Int -> Int) load = $("#loadimg") .asEventStream("click") .map(function(e){ return function(x){ return x + 1 }}) // loadP :: Property Int loadP = load.scan(1,

我有一些
属性
,它使AJAX请求着火。但是,一旦到达case
404
,我就想终止这个流,但我不知道怎么做。代码如下:

// load :: EventStream (Int -> Int)
load = $("#loadimg")
    .asEventStream("click")
    .map(function(e){ return function(x){ return x + 1 }})

// loadP :: Property Int
loadP = load.scan(1, function(x,f){ return f(x) })

// loadImg :: Property (HttpRequest -> Either String String)
loadImg = loadP
    .flatMapLatest(function(i){ return Bacon.fromPromise(imgLoader(i) )})
    .mapError("")

// imgLoader :: Int -> HttpRequest String
imgLoader = function(id){

    // pretend src, root and fmt are global variables
    var url = src + root + id + fmt

    return $.ajax({ 
        type   : "GET",
        url    : url,
    })
    .then(function(ys){ return url })

}

// EventStreamT (State Dom) String
loadImg.onValue(function(url){

    if (url.length == 0) return url        
    else return appendImg("#imgs", "name", url);

})

把这个“abort bacon property”代码放在最后一个函数中是没有意义的,副作用就在这个函数中,但是我还要在哪里测试
404
案例呢?如何终止线程?

您可以简单地说
.endError()
而不是
.mapError(“”
),以结束任何错误

如果您需要针对每种错误类型进行更具体的处理,您可以这样做

loadImg404 = loadImg.mapError(".status").filter(function(status) { return status==404 })
...
loadImg.takeUntil(loadImg404).onValue(..)

您可以简单地说
.endError()
而不是
.maperor(“”
),以任何错误结束

如果您需要针对每种错误类型进行更具体的处理,您可以这样做

loadImg404 = loadImg.mapError(".status").filter(function(status) { return status==404 })
...
loadImg.takeUntil(loadImg404).onValue(..)

在Bacon.js 0.6.17中,您可以将谓词函数传递给
endOnError
,这样您就可以

loadImg404 = loadImg.mapError(".status").filter(function(status) { return status==404 })
...
loadImg.takeUntil(loadImg404).onValue(..)
loadImg=loadP .flatMapLatest(函数(i){return Bacon.fromPromise(imgLoader(i))})
.endError(函数(错误){return error.status==404})

在Bacon.js 0.6.17中,您可以将谓词函数传递给
endError
,这样您就可以

loadImg404 = loadImg.mapError(".status").filter(function(status) { return status==404 })
...
loadImg.takeUntil(loadImg404).onValue(..)
loadImg=loadP .flatMapLatest(函数(i){return Bacon.fromPromise(imgLoader(i))}) .endError(函数(错误){返回错误.status==404})